From 9a83a074ce88154bc96e871868ed481cb1c31fe7 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 1 Jan 2011 17:13:04 +1030 Subject: [PATCH] list: LIST_HEAD_INIT I find hiding the declaration in LIST_HEAD() a bit weird. --- ccan/list/list.h | 19 ++++++++++++++++++- ccan/list/test/run.c | 7 +++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ccan/list/list.h b/ccan/list/list.h index 02835a6b..f27a0882 100644 --- a/ccan/list/list.h +++ b/ccan/list/list.h @@ -94,6 +94,20 @@ struct list_node *list_check_node(const struct list_node *n, #define list_debug_node(n) (n) #endif +/** + * LIST_HEAD_INIT - initalizer for an empty list_head + * @name: the name of the list. + * + * Explicit initializer for an empty list. + * + * See also: + * LIST_HEAD, list_head_init() + * + * Example: + * static struct list_head my_list = LIST_HEAD_INIT(my_list); + */ +#define LIST_HEAD_INIT(name) { { &name.n, &name.n } } + /** * LIST_HEAD - define and initalize an empty list_head * @name: the name of the list. @@ -101,11 +115,14 @@ struct list_node *list_check_node(const struct list_node *n, * The LIST_HEAD macro defines a list_head and initializes it to an empty * list. It can be prepended by "static" to define a static list_head. * + * See also: + * LIST_HEAD_INIT, list_head_init() + * * Example: * static LIST_HEAD(my_global_list); */ #define LIST_HEAD(name) \ - struct list_head name = { { &name.n, &name.n } } + struct list_head name = LIST_HEAD_INIT(name) /** * list_head_init - initialize a list_head diff --git a/ccan/list/test/run.c b/ccan/list/test/run.c index 13a1da41..f80e364a 100644 --- a/ccan/list/test/run.c +++ b/ccan/list/test/run.c @@ -20,11 +20,14 @@ int main(int argc, char *argv[]) struct parent parent; struct child c1, c2, c3, *c, *n; unsigned int i; + struct list_head list = LIST_HEAD_INIT(list); - plan_tests(47); - /* Test LIST_HEAD, list_empty and check_list */ + plan_tests(49); + /* Test LIST_HEAD, LIST_HEAD_INIT, list_empty and check_list */ ok1(list_empty(&static_list)); ok1(list_check(&static_list, NULL)); + ok1(list_empty(&list)); + ok1(list_check(&list, NULL)); parent.num_children = 0; list_head_init(&parent.children); -- 2.39.2