Skip to content

Commit

Permalink
i915: Move list_count() to list.h for broader use
Browse files Browse the repository at this point in the history
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.

Reviewed-by: Lucas De Marchi <[email protected]>
Acked-by: Jani Nikula <[email protected]>
Signed-off-by: Andy Shevchenko <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
andy-shev authored and gregkh committed Nov 29, 2022
1 parent 944fe91 commit a9efc04
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
13 changes: 1 addition & 12 deletions drivers/gpu/drm/i915/gt/intel_engine_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2004,17 +2004,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);
Expand Down Expand Up @@ -2189,7 +2178,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);

Expand Down
15 changes: 15 additions & 0 deletions include/linux/list.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit a9efc04

Please sign in to comment.