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
.