链表头的初始化(list_head)

链表头的初始化(list_head)

Content #

链表头的初始化有两种方法,一种是静态初始化,另一种动态初始化。把 next 和 prev指针都初始化并指向自己,这样便初始化了一个带头节点的空链表。

<include/linux/list.h>
  1. 静态初始化
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
    struct list_head name = LIST_HEAD_INIT(name)
  1. 动态初始化
static inline void INIT_LIST_HEAD(struct list_head *list)
{
    list->next = list;
    list->prev = list;
}

From #

奔跑吧Linux内核——入门篇