第三篇博客,主要是针对删除,移动,合并函数的理解,很简单的,相信大家一看就明白了。
static inline void __list_del(struct list_head * prev, struct list_head * next) //删除结点。删除链表中prev与next之间的元素
{
next->prev = prev;
prev->next = next;
}
static inline void list_del(struct list_head *entry) //删除一个结点entry,并将删除结点地址置为0
{
__list_del(entry->prev, entry->next);
entry->next = LIST_POISON1; //指针清除0
entry->prev = LIST_POISON2; //指针清除0
}
static inline void list_del_init(struct list_head *entry) //从链表中删除元素entry,并将其初始化为新的链表。
{
__list_del(entry->prev, entry->next);
INIT_LIST_HEAD(entry); //初始化就是把指针指向自己
}
static inline void list_move(struct list_head *list, struct list_head *head) //将该结点摘除并插入到链表头部
{
__list_del(list->prev, list-