22#define LIST_INIT(head) {&head, &head}
69 return item->
next == list;
73#define list_is_empty(item) \
74 ((item)->next == item)
76#define __list_object(item, type, offset) \
77 ((type *)((char *)(item) - (offset)))
80#define list_item(item, type, member) \
81 __list_object(item, type, offsetof(type, member))
84#define list_first_item(list, type, member) \
85 __list_object((list)->next, type, offsetof(type, member))
88#define list_next_item(object, member) \
89 list_item((object)->member.next, __typeof__(*(object)), member)
92#define list_for_item(item, list) \
93 for (item = (list)->next; item != (list); item = item->next)
96#define list_for_item_prev(item, list) \
97 for (item = (list)->prev; item != (list); item = item->prev)
100#define list_for_item_safe(item, tmp, list) \
101 for (item = (list)->next, tmp = item->next;\
103 item = tmp, tmp = item->next)
115 if (new_list->
next == old_list) {
119 if (li->
next == old_list)
122 if (li->
prev == old_list)
static void list_relink(struct list_item *new_list, struct list_item *old_list)
Re-links the list when head address changed (list moved).
Definition list.h:110
static int list_item_is_last(struct list_item *item, struct list_item *list)
Definition list.h:66
#define list_for_item_prev(item, list)
Definition list.h:96
static void list_init(struct list_item *list)
Definition list.h:25
static void list_item_del(struct list_item *item)
Definition list.h:58
static void list_item_append(struct list_item *item, struct list_item *list)
Definition list.h:44
#define list_item(item, type, member)
Definition list.h:80
#define list_for_item(item, list)
Definition list.h:92
static void list_item_prepend(struct list_item *item, struct list_item *list)
Definition list.h:32
struct list_item * next
Definition list.h:17
struct list_item * prev
Definition list.h:18