call_rcu_hurry(9)
π call_rcu_hurry(9) π
okay so bestie, welcome to the call_rcu_hurry page from the Kernel API Manual β this is the RCU one that's like call_rcu but with main character energy and absolutely zero chill about waiting around. let's get into it β¨
πΈ NAME πΈ
call_rcu_hurry β queue an RCU callback to be invoked after the grace period, and while you're at it, flush all the lazy callbacks (including the brand-new one you just queued) over to the main ->cblist. yeah. it does both. multitasking icon behavior π
π SYNOPSIS π
void call_rcu_hurry (struct rcu_head *head , rcu_callback_t func );
β¨ ARGUMENTS β¨
headβ thestruct rcu_headstructure you're using to queue up the RCU updates. it's the little handle that holds your spot in line π«Άfuncβ the actual callback function that gets invoked once the grace period is done. this is the thing that actually does the thing.
π¦ DESCRIPTION π¦
so here's the vibe: your callback function gets invoked some time after a full grace period elapses β which is a fancy way of saying, after every single pre-existing RCU read-side critical section has completed. all of them. no stragglers. β
now for the part you're actually here for: use this API instead of call_rcu if you don't want your callback sitting around getting delayed for very long periods of time. and no, that's not a paranoid hypothetical β that delay can genuinely happen on systems that aren't under memory pressure, and on systems that are lightly loaded or mostly idle. your callback is just chilling there. napping. π
this function makes callbacks get invoked sooner rather than later β but there's a tradeoff, and we're gonna be honest about it: it does so at the expense of extra power. that's the cost. that's the deal. π₯
other than that whole hurrying thing, this function is identical to call_rcu, and it literally reuses call_rcu's logic. so if you want the details about memory ordering and all the other functionality, go read call_rcu. it's all there. iykyk π
π SEE ALSO π
kernel file ./kernel/rcu/tree.c β plus these besties:
rcu_softirq_qs(9)rcu_watching_snap_stopped_since(9)rcu_is_cpu_rrupt_from_idle(9)rcu_irq_exit_check_preempt(9)__rcu_irq_enter_check_tick(9)rcu_is_watching(9)rcu_set_gpwrap_lag(9)call_rcu(9)synchronize_rcu(9)get_completed_synchronize_rcu_full(9)get_state_synchronize_rcu(9)get_state_synchronize_rcu_full(9)start_poll_synchronize_rcu(9)start_poll_synchronize_rcu_full(9)poll_state_synchronize_rcu(9)poll_state_synchronize_rcu_full(9)cond_synchronize_rcu(9)cond_synchronize_rcu_full(9)rcu_barrier(9)rcu_barrier_throttled(9)
π quick reminder bestie: the whole "sooner rather than later" thing costs extra power. not a bug, that's literally the documented tradeoff. don't come for me about your battery. π
and that's the page! brought to you from ./kernel/rcu, dated October 2026, under the name call_rcu_hurry(9) β go queue something and hurry it along, you've got this π§ππ
π¦ 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