list_empty()
函数在中定义./include/linux/list.h
,其定义为
static inline int list_empty(const struct list_head *head)
{
return head->next == head;
}
list_head
数据结构定义为
struct list_head {
struct list_head *next, *prev;
};
我不明白为什么内核中的这个实现会检查head->next == head
而不是head->next == NULL
&& head->prev == NULL
。