]>
git.proxmox.com Git - efi-boot-shim.git/blob - include/list.h
1 // SPDX-License-Identifier: BSD-2-Clause-Patent
3 * list.h - simple list primitives
9 #define container_of(ptr, type, member) \
11 void *__mptr = (void *)(ptr); \
12 ((type *)(__mptr - offsetof(type, member))); \
16 struct list_head
*next
;
17 struct list_head
*prev
;
20 typedef struct list_head list_t
;
22 #define LIST_HEAD_INIT(name) \
24 .next = &(name), .prev = &(name) \
27 #define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
29 #define INIT_LIST_HEAD(ptr) \
31 (ptr)->next = (ptr); \
32 (ptr)->prev = (ptr); \
36 list_empty(const struct list_head
*head
)
38 return head
->next
== head
;
42 __list_add(struct list_head
*new, struct list_head
*prev
,
43 struct list_head
*next
)
52 list_add(struct list_head
*new, struct list_head
*head
)
54 __list_add(new, head
, head
->next
);
58 list_add_tail(struct list_head
*new, struct list_head
*head
)
60 __list_add(new, head
->prev
, head
);
64 __list_del(struct list_head
*prev
, struct list_head
*next
)
71 __list_del_entry(struct list_head
*entry
)
73 __list_del(entry
->prev
, entry
->next
);
77 list_del(struct list_head
*entry
)
79 __list_del_entry(entry
);
84 #define list_entry(ptr, type, member) container_of(ptr, type, member)
86 #define list_first_entry(ptr, type, member) \
87 list_entry((ptr)->next, type, member)
89 #define list_last_entry(ptr, type, member) list_entry((ptr)->prev, type, member)
91 #define list_for_each(pos, head) \
92 for (pos = (head)->next; pos != (head); pos = pos->next)
94 #define list_for_each_safe(pos, n, head) \
95 for (pos = (head)->next, n = pos->next; pos != (head); \
96 pos = n, n = pos->next)
98 #define list_for_each_prev(pos, head) \
99 for (pos = (head)->prev; pos != (head); pos = pos->prev)
101 #define list_for_each_prev_safe(pos, n, head) \
102 for (pos = (head)->prev, n = pos->prev; pos != (head); \
103 pos = n, n = pos->prev)
106 list_size(struct list_head
*entry
)
110 list_for_each(pos
, entry
) {
116 #endif /* !LIST_H_ */
117 // vim:fenc=utf-8:tw=75:noet