On Mon, 14 Nov 2022, Andy Shevchenko <andriy.shevche...@linux.intel.com> wrote:
> Some of the existing users, and definitely will be new ones, want to
> count existing nodes in the list. Provide a generic API for that by
> moving code from i915 to list.h.

I think I'd find list_length() a much more natural name for this.

*shrug*

Acked-by: Jani Nikula <jani.nik...@intel.com>

regardless of what you decide to do with name or static inline etc.


>
> Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
> ---
> v2: dropped the duplicate code in i915 (LKP)
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c | 13 +------------
>  include/linux/list.h                      | 13 +++++++++++++
>  2 files changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
> b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> index 6ae8b07cfaa1..b5d474be564d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> @@ -2085,17 +2085,6 @@ static void print_request_ring(struct drm_printer *m, 
> struct i915_request *rq)
>       }
>  }
>  
> -static unsigned long list_count(struct list_head *list)
> -{
> -     struct list_head *pos;
> -     unsigned long count = 0;
> -
> -     list_for_each(pos, list)
> -             count++;
> -
> -     return count;
> -}
> -
>  static unsigned long read_ul(void *p, size_t x)
>  {
>       return *(unsigned long *)(p + x);
> @@ -2270,7 +2259,7 @@ void intel_engine_dump(struct intel_engine_cs *engine,
>       spin_lock_irqsave(&engine->sched_engine->lock, flags);
>       engine_dump_active_requests(engine, m);
>  
> -     drm_printf(m, "\tOn hold?: %lu\n",
> +     drm_printf(m, "\tOn hold?: %zu\n",
>                  list_count(&engine->sched_engine->hold));
>       spin_unlock_irqrestore(&engine->sched_engine->lock, flags);
>  
> diff --git a/include/linux/list.h b/include/linux/list.h
> index 61762054b4be..098eccf8c1b6 100644
> --- a/include/linux/list.h
> +++ b/include/linux/list.h
> @@ -655,6 +655,19 @@ static inline void list_splice_tail_init(struct 
> list_head *list,
>            !list_is_head(pos, (head)); \
>            pos = n, n = pos->prev)
>  
> +/**
> + * list_count - count nodes in the list
> + * @head:    the head for your list.
> + */
> +#define list_count(head)             \
> +({                                   \
> +     struct list_head *__tmp;        \
> +     size_t __i = 0;                 \
> +     list_for_each(__tmp, head)      \
> +             __i++;                  \
> +     __i;                            \
> +})
> +
>  /**
>   * list_entry_is_head - test if the entry points to the head of the list
>   * @pos:     the type * to cursor

-- 
Jani Nikula, Intel Open Source Graphics Center

Reply via email to