Re: [PATCH] list: Add hlist_count_nodes()

From: Pierre Gondois
Date: Wed Jan 03 2024 - 07:04:24 EST


Hello Marco,

On 1/3/24 12:25, Marco Elver wrote:
On Wed, 3 Jan 2024 at 10:02, Pierre Gondois <pierre.gondois@xxxxxxx> wrote:

Add a function to count nodes in a hlist. hlist_count_nodes()
is similar to list_count_nodes().

Signed-off-by: Pierre Gondois <pierre.gondois@xxxxxxx>

Is this patch part of another patch series? As-is, this will be dead
code, and there's no guarantee someone will just go and delete it in
future. Although this function looks useful, we also should avoid
adding new dead code.

The function is indeed not used in the project right now. I needed
it for a private module. If it helps integrating the function and
not make it dead code, maybe I could add usages at the following
places:
- drivers/gpu/drm/drm_hashtab.c::print_binder_node_nilocked()
- drivers/md/bcache/sysfs.c::bch_cache_max_chain()

Regards,
Pierre


---
include/linux/list.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)

diff --git a/include/linux/list.h b/include/linux/list.h
index 1837caedf723..0f1b1d4a2e2e 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -1175,4 +1175,19 @@ static inline void hlist_move_list(struct hlist_head *old,
pos && ({ n = pos->member.next; 1; }); \
pos = hlist_entry_safe(n, typeof(*pos), member))

+/**
+ * hlist_count_nodes - count nodes in the hlist
+ * @head: the head for your hlist.
+ */
+static inline size_t hlist_count_nodes(struct hlist_head *head)
+{
+ struct hlist_node *pos;
+ size_t count = 0;
+
+ hlist_for_each(pos, head)
+ count++;
+
+ return count;
+}
+
#endif
--
2.25.1