[PATCH v5 06/16] hashtable: add macro HASHTABLE_INIT
Changyuan Lyu
changyuanl at google.com
Wed Mar 19 18:55:41 PDT 2025
Similar to HLIST_HEAD_INIT, HASHTABLE_INIT allows a hashtable embedded
in another structure to be initialized at compile time.
Example,
struct tree_node {
DECLARE_HASHTABLE(properties, 4);
DECLARE_HASHTABLE(sub_nodes, 4);
};
static struct tree_node root_node = {
.properties = HASHTABLE_INIT(4),
.sub_nodes = HASHTABLE_INIT(4),
};
Signed-off-by: Changyuan Lyu <changyuanl at google.com>
---
include/linux/hashtable.h | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h
index f6c666730b8c..27e07a436e2a 100644
--- a/include/linux/hashtable.h
+++ b/include/linux/hashtable.h
@@ -13,13 +13,14 @@
#include <linux/hash.h>
#include <linux/rculist.h>
+#define HASHTABLE_INIT(bits) { [0 ... ((1 << (bits)) - 1)] = HLIST_HEAD_INIT }
+
#define DEFINE_HASHTABLE(name, bits) \
- struct hlist_head name[1 << (bits)] = \
- { [0 ... ((1 << (bits)) - 1)] = HLIST_HEAD_INIT }
+ struct hlist_head name[1 << (bits)] = HASHTABLE_INIT(bits) \
#define DEFINE_READ_MOSTLY_HASHTABLE(name, bits) \
struct hlist_head name[1 << (bits)] __read_mostly = \
- { [0 ... ((1 << (bits)) - 1)] = HLIST_HEAD_INIT }
+ HASHTABLE_INIT(bits)
#define DECLARE_HASHTABLE(name, bits) \
struct hlist_head name[1 << (bits)]
--
2.48.1.711.g2feabab25a-goog
More information about the linux-arm-kernel
mailing list