Re: [PATCH v2] drm/mm: rewrite drm_mm_for_each_hole

From: Daniel Vetter
Date: Mon Nov 23 2015 - 04:05:56 EST


On Sat, Nov 21, 2015 at 10:04:04PM +0800, Geliang Tang wrote:
> When backwards is 0, __drm_mm_for_each_hole is same as
> drm_mm_for_each_hole. So I rewrite drm_mm_for_each_hole
> by using __drm_mm_for_each_hole.
>
> Signed-off-by: Geliang Tang <geliangtang@xxxxxxx>

Applied to drm-misc, thanks.
-Daniel

> ---
> Changes in v2:
> - fix make htmldocs warning
> ---
> include/drm/drm_mm.h | 23 +++++++++--------------
> 1 file changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
> index 0de6290..a58cc6c 100644
> --- a/include/drm/drm_mm.h
> +++ b/include/drm/drm_mm.h
> @@ -180,6 +180,14 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
> &(mm)->head_node.node_list, \
> node_list)
>
> +#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
> + for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> + &entry->hole_stack != &(mm)->hole_stack ? \
> + hole_start = drm_mm_hole_node_start(entry), \
> + hole_end = drm_mm_hole_node_end(entry), \
> + 1 : 0; \
> + entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
> +
> /**
> * drm_mm_for_each_hole - iterator to walk over all holes
> * @entry: drm_mm_node used internally to track progress
> @@ -200,20 +208,7 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
> * going backwards.
> */
> #define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
> - for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> - &entry->hole_stack != &(mm)->hole_stack ? \
> - hole_start = drm_mm_hole_node_start(entry), \
> - hole_end = drm_mm_hole_node_end(entry), \
> - 1 : 0; \
> - entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack))
> -
> -#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
> - for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> - &entry->hole_stack != &(mm)->hole_stack ? \
> - hole_start = drm_mm_hole_node_start(entry), \
> - hole_end = drm_mm_hole_node_end(entry), \
> - 1 : 0; \
> - entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
> + __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)
>
> /*
> * Basic range manager support (drm_mm.c)
> --
> 2.5.0
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/