【发布时间】:2016-02-24 08:55:51
【问题描述】:
在Linux内核源码中,list_splice是用__list_splice实现的:
static inline void __list_splice(const struct list_head *list,
struct list_head *prev,
struct list_head *next)
{
struct list_head *first = list->next; // Why?
struct list_head *last = list->prev;
first->prev = prev;
prev->next = first;
last->next = next;
next->prev = last;
}
list 不是已经指向链表的头部了吗?
为什么我们需要取而代之的是list->next?
【问题讨论】:
-
如果它被这样使用,那么列表头可能不是实际的列表节点。
标签: c linux-kernel linked-list