hlist_add_tail_rcu(9)
π hlist_add_tail_rcu(9) β Kernel API Manual, but make it group chat π
okay so bestie, welcome to the hlist_add_tail_rcu(9) page from the Kernel API Manual β¨ this one is short but it has lore, and we are keeping every single detail, no cap π«Ά
π NAME π
hlist_add_tail_rcu β that's literally the whole name line, bestie; the original leaves the description after the dash blank π iconic minimalist behavior π
β¨ SYNOPSIS β¨
void hlist_add_tail_rcu (struct hlist_node *n , struct hlist_head *h );
π¦ ARGUMENTS π¦
nβ the element to add to the hash list. π«Άhβ the list to add to. π
π₯ DESCRIPTION π₯
okay so this function adds the specified element to the specified hlist, while permitting racing traversals. periodt β¨
here's the serious bit, bestie π¨ the caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as hlist_add_head_rcu or hlist_del_rcu, running on this same list.
however, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as hlist_for_each_entry_rcu, used to prevent memory-consistency problems on Alpha CPUs. π
and regardless of the type of CPU, the list-traversal primitive must be guarded by rcu_read_lock. π
not me reminding you that lock discipline is the main character here π
π SEE ALSO π
Kernel file ./include/linux/rculist.h β and the whole reference squad is: list_for_each_rcu(9), list_tail_rcu(9), list_add_rcu(9), list_add_tail_rcu(9), list_del_rcu(9), list_bidir_del_rcu(9), hlist_del_init_rcu(9), list_replace_rcu(9), list_splice_rcu(9), __list_splice_init_rcu(9), list_splice_init_rcu(9), list_splice_tail_init_rcu(9), list_entry_rcu(9), list_first_or_null_rcu(9), list_next_or_null_rcu(9), list_for_each_entry_rcu(9), list_for_each_entry_srcu(9), list_entry_lockless(9), list_for_each_entry_lockless(9), list_for_each_entry_continue_rcu(9), list_for_each_entry_from_rcu(9), hlist_del_rcu(9), hlist_replace_rcu(9), hlists_swap_heads_rcu(9), hlist_add_head_rcu(9), hlist_add_before_rcu(9), hlist_add_behind_rcu(9), hlist_for_each_entry_rcu(9), hlist_for_each_entry_srcu(9), hlist_for_each_entry_rcu_notrace(9), hlist_for_each_entry_rcu_bh(9), hlist_for_each_entry_continue_rcu(9), hlist_for_each_entry_continue_rcu_bh(9), hlist_for_each_entry_from_rcu(9) π
okay that's the page, bestie! source/version: ./include/linux; date: October 2026; and the page itself is hlist_add_tail_rcu(9) β bye bestie, go guard that traversal with rcu_read_lock π
β¨
π¦ 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