Message ID | 20221123144901.40493-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | a9efc04cfd05690e91279f41c2325c46335c43ef |
Headers | show |
Series | [v4,1/4] i915: Move list_count() to list.h for broader use | expand |
On Wed, Nov 23, 2022 at 04:48:58PM +0200, Andy Shevchenko 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. > >Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> >Acked-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> thanks Lucas De Marchi >--- >v4: fixed prototype when converting to static inline >v3: added tag (Jani), changed to be static inline (Mike) >v2: dropped the duplicate code in i915 (LKP) > drivers/gpu/drm/i915/gt/intel_engine_cs.c | 13 +------------ > include/linux/list.h | 15 +++++++++++++++ > 2 files changed, 16 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 c33e0d72d670..b96c8217743c 100644 >--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c >+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c >@@ -2094,17 +2094,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); >@@ -2279,7 +2268,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..632a298c7018 100644 >--- a/include/linux/list.h >+++ b/include/linux/list.h >@@ -655,6 +655,21 @@ 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. >+ */ >+static inline size_t list_count(struct list_head *head) >+{ >+ struct list_head *pos; >+ size_t count = 0; >+ >+ list_for_each(pos, head) >+ count++; >+ >+ return count; >+} >+ > /** > * list_entry_is_head - test if the entry points to the head of the list > * @pos: the type * to cursor >-- >2.35.1 >
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c index c33e0d72d670..b96c8217743c 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -2094,17 +2094,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); @@ -2279,7 +2268,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..632a298c7018 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -655,6 +655,21 @@ 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. + */ +static inline size_t list_count(struct list_head *head) +{ + struct list_head *pos; + size_t count = 0; + + list_for_each(pos, head) + count++; + + return count; +} + /** * list_entry_is_head - test if the entry points to the head of the list * @pos: the type * to cursor