LIST_HEAD(9)
πΈ LIST_HEAD(9) πΈ the Kernel API Manual page, bestie
okay so picture this: you're deep in kernel land, you need a linked list node, and you want it already initialized at declaration time. That's the whole gig. This little macro is the definition of a &struct list_head with initialization values baked right in. no cap, it's that simple. β¨
β¨ NAME β¨
LIST_HEAD β the definition of a &struct list_head with initialization values, i.e. it's giving "born ready" energy. π
π SYNOPSIS π
LIST_HEAD (name );
like yes that's the whole thing, she's lowkey minimal. π¦
π«Ά ARGUMENTS π«Ά
nameβ bestie, this is just the name of thelist_head. that's it. that's the argument. name her something cute. π
π₯ SEE ALSO π₯
okay this is the part where the page goes FULL main-character and shouts out literally the entire list family. every single one, no skips, iykyk. π
the header file where all this lives: Kernel file ./include/linux/list.h
the list girlies:
LIST_HEAD_INIT(9)LIST_HEAD_GUARDED(9)INIT_LIST_HEAD(9)list_add(9)list_add_tail(9)list_add_tail_release(9)list_del(9)list_replace(9)list_replace_init(9)list_swap(9)list_del_init(9)list_move(9)list_move_tail(9)list_bulk_move_tail(9)list_is_first(9)list_is_last(9)list_is_head(9)list_empty(9)list_del_init_careful(9)list_empty_careful(9)list_rotate_left(9)list_rotate_to_front(9)list_is_singular(9)list_cut_position(9)list_cut_before(9)list_splice(9)list_splice_tail(9)list_splice_init(9)list_splice_tail_init(9)
the entry / iteration squad:
list_entry(9)list_first_entry(9)list_last_entry(9)list_first_entry_or_null(9)list_first_entry_or_null_acquire(9)list_last_entry_or_null(9)list_next_entry(9)list_next_entry_circular(9)list_prev_entry(9)list_prev_entry_circular(9)list_for_each(9)list_for_each_continue(9)list_for_each_prev(9)list_for_each_safe(9)list_for_each_prev_safe(9)list_count_nodes(9)list_entry_is_head(9)list_for_each_entry(9)list_for_each_entry_reverse(9)list_prepare_entry(9)list_for_each_entry_continue(9)list_for_each_entry_continue_reverse(9)list_for_each_entry_from(9)list_for_each_entry_from_reverse(9)list_for_each_entry_safe(9)list_for_each_entry_safe_continue(9)list_for_each_entry_safe_from(9)list_for_each_entry_safe_reverse(9)list_safe_reset_next(9)
and the hlist cousins, we don't forget family:
hlist_unhashed(9)hlist_unhashed_lockless(9)hlist_empty(9)hlist_del(9)hlist_del_init(9)hlist_add_head(9)hlist_add_before(9)hlist_add_behind(9)hlist_add_fake(9)hlist_fake(9)hlist_is_singular_node(9)hlist_move_list(9)hlist_splice_init(9)hlist_for_each_entry(9)hlist_for_each_entry_continue(9)hlist_for_each_entry_from(9)hlist_for_each_entry_safe(9)hlist_count_nodes(9)
ngl bestie this page is short but she's iconic β it's one macro, one argument, and a whole extended family in SEE ALSO. periodt. πβ¨
and that's the tea π β this one comes from ./include/linux, dated October 2026, straight out of the Kernel API Manual. mwah, go forth and initialize your lists ππ§ββοΈπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms