klist: implement KLIST_INIT() and DEFINE_KLIST()
Tejun Heo [Fri, 25 Apr 2008 18:16:04 +0000 (03:16 +0900)]
klist is missing static initializers and definition helper.  Add them.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

include/linux/klist.h

index 7407125..a119c0d 100644 (file)
@@ -25,6 +25,14 @@ struct klist {
        void                    (*put)(struct klist_node *);
 };
 
+#define KLIST_INIT(_name, _get, _put)                                  \
+       { .k_lock       = __SPIN_LOCK_UNLOCKED(_name.k_lock),           \
+         .k_list       = LIST_HEAD_INIT(_name.k_list),                 \
+         .get          = _get,                                         \
+         .put          = _put, }
+
+#define DEFINE_KLIST(_name, _get, _put)                                        \
+       struct klist _name = KLIST_INIT(_name, _get, _put)
 
 extern void klist_init(struct klist * k, void (*get)(struct klist_node *),
                       void (*put)(struct klist_node *));