linux/list.h
0018
0019
0020
0021
0022
0023
0024
0025
0026
0028 struct list_head {
0029 struct list_head *next, *prev;
0030 };
0031
0032 #define LIST_HEAD_INIT(name) { &(name), &(name) }
0033
0034 #define LIST_HEAD(name) \
0035 struct list_head name = LIST_HEAD_INIT(name)
0036
0037 #define INIT_LIST_HEAD(ptr) do { \
0038 (ptr)->next = (ptr); (ptr)->prev = (ptr); \
0039 } while (0)
0432
0433
0434
0435
0436
0437
0438
0439 struct hlist_head {
0440 struct hlist_node *first;
0441 };
0442
0443 struct hlist_node {
0444 struct hlist_node *next, **pprev;
0445 };
0446
0447 #define HLIST_HEAD_INIT { .first = NULL }
0448 #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL }
0449 #define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
0450 #define INIT_HLIST_NODE(ptr) ((ptr)->next = NULL, (ptr)->pprev = NULL)
虽是基础的数据结构, 在内核使用很广。 在smp中加入了rcu