이 파일의 문서화 페이지로 가기
18 #define LIST_HEAD_INIT(list) { &(list), &(list) }
23 #define LIST_HEAD(list) struct list_head list = LIST_HEAD_INIT(list)
28 #define LIST_NEXT(name) ((name)->next)
33 #define LIST_PREV(name) ((name)->prev)
49 #define list_entry(ptr, type, member) \
50 container_of(ptr, type, member)
55 #define list_first_entry(ptr, type, member) \
56 (((ptr)->next == (ptr)) ? NULL : \
57 list_entry((ptr)->next, type, member))
62 #define list_for_each(pos, head) \
63 for (pos = (head)->next; \
64 prefetch(pos->next), pos != (head); pos = pos->next)
69 #define list_for_each_prev(pos, head) \
70 for (pos = (head)->prev; \
71 prefetch(pos->prev), pos != (head); pos = pos->prev)
76 #define list_for_each_safe(pos, n, head) \
77 for (pos = (head)->next, n = pos->next; \
78 pos != (head); pos = n, n = pos->next)
83 #define list_for_each_prev_safe(pos, n, head) \
84 for (pos = (head)->prev, n = pos->prev; \
85 prefetch(pos->prev), pos != (head); pos = n, n = pos->prev)
90 #define list_for_each_entry(pos, head, member) \
91 for (pos = list_entry((head)->next, typeof(*pos), member); \
92 prefetch(pos->member.next), &pos->member != (head); \
93 pos = list_entry(pos->member.next, typeof(*pos), member))
109 static inline void __list_add(
struct list_head *
new,
128 __list_add(
new, head, head->
next);
140 __list_add(
new, head->
prev, head);
151 static inline void list_insert_after(
struct list_head *
new,
154 new->next = head->
next;
169 static inline void list_insert_before(
struct list_head *
new,
194 static inline void list_del(
struct list_head *entry)
196 __list_del(entry->
prev, entry->
next);