hlist_add_fake(9)
β¨ hlist_add_fake(9) β¨
okay so bestie, we're in the Kernel API Manual today and this page is genuinely a little icon of list trickery π
πΈ NAME
hlist_add_fake β creates a fake hlist that's literally just one single headless node, no cap
π SYNOPSIS
void hlist_add_fake (struct hlist_node *n );
π¦ ARGUMENTS
nβ the node you're turning into a fake list, that's it, that's the whole vibe
π DESCRIPTION
so what this does is it makes n appear to be its own predecessor on a headless hlist π«Ά like she's showing up to the party as her own plus-one.
the whole point of this? it's giving "let things like hlist_del work correctly" β specifically in cases where there is no list at all. no list, no problem, we just fake the predecessor link and everyone's happy β¨
fr fr the trick is that downstream code expects a predecessor to exist, so instead of adding a bunch of null checks everywhere you just make the node pretend. iconic behavior tbh π
π SEE ALSO
Kernel file ./include/linux/list.h β and okay bestie, the related-pages list here is long, so buckle up π
LIST_HEAD_INIT(9),LIST_HEAD(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)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_count_nodes(9),list_entry_is_head(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_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)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_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)
and that's the whole page, bestie π§π this one lives down in ./include/linux, and it's tagged October 2026 in the Kernel API Manual β so like, save the date ig π« see u in the kernel sources π«Ά
π¦ 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