Skip to content

Hash list

include/structures/hlist.h View source View on GitHub
struct hlist_head (1 field) source
§ struct hlist_node *first
struct hlist_node (2 fields) source
§ struct hlist_node *next
§ struct hlist_node **pprev
void INIT_HLIST_NODE(struct hlist_node *h)
source
bool hlist_unhashed(const struct hlist_node *h)
source
bool hlist_empty(const struct hlist_head *h)
source
void hlist_add_before(struct hlist_node *n, struct hlist_node *next)
source
void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
source
void hlist_del(struct hlist_node *n)
source
void hlist_move_list(struct hlist_head *old, struct hlist_head *new)
source
struct hlist_node * hlist_pop_head(struct hlist_head *h)
source
#define HLIST_HEAD_INIT {.first = NULL}
source
#define INIT_HLIST_HEAD(ptr)
source
Expansion
#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
#define hlist_entry(ptr, type, member)
source
Expansion
#define hlist_entry(ptr, type, member) container_of(ptr, type, member)
#define hlist_entry_safe(ptr, type, member)
source
Expansion
#define hlist_entry_safe(ptr, type, member) \
    ({ \
        __auto_type __hlist_ptr = (ptr); \
        __hlist_ptr ? hlist_entry(__hlist_ptr, type, member) : NULL; \
    })
#define hlist_for_each_entry(pos, head, member)
source
Expansion
#define hlist_for_each_entry(pos, head, member) \
    for (pos = hlist_entry_safe((head)->first, typeof(*pos), member); pos; \
         pos = hlist_entry_safe(pos->member.next, typeof(*pos), member))
#define hlist_for_each_entry_safe(pos, n, head, member)
source
Expansion
#define hlist_for_each_entry_safe(pos, n, head, member) \
    for (pos = hlist_entry_safe((head)->first, typeof(*pos), member); \
         pos && ({ \
             n = pos->member.next; \
             1; \
         }); \
         pos = hlist_entry_safe(n, typeof(*pos), member))