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@xxxxxxxxxx> --- 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