synchronize_rcu_mult(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– synchronize_rcu_mult(9) β€” Kernel API Manual πŸ’–

Ok bestie, welcome to the Kernel API Manual entry for synchronize_rcu_mult(9) β€” it’s giving β€œwait for multiple grace periods at once” and honestly? Iconic. ✨


🌸 NAME 🌸

synchronize_rcu_mult β€” Wait concurrently for multiple grace periods.


πŸ¦‹ SYNOPSIS πŸ¦‹

synchronize_rcu_mult (... );

πŸŽ€ ARGUMENTS πŸŽ€

  • ... β€” List of call_rcu functions for different grace periods to wait on. That’s the whole vibe, fr fr.

πŸ’… DESCRIPTION πŸ’…

This macro waits concurrently for multiple types of RCU grace periods. Like, not one at a time β€” concurrently, bestie. 🫢

For example, synchronize_rcu_mult(call_rcu, call_rcu_tasks) would wait on concurrent RCU and RCU-tasks grace periods. Slay. πŸ”₯

Waiting on a given SRCU domain requires you to write a wrapper function for that SRCU domain’s call_srcu function, with this wrapper supplying the pointer to the corresponding srcu_struct. So yes, you gotta bring your own little wrapper β€” it’s not gonna manifest the pointer out of thin air, no cap. πŸ’€

Lowkey important note: call_rcu_hurry should be used instead of call_rcu because in kernels built with CONFIG_RCU_LAZY=y the delay between the invocation of call_rcu and that of the corresponding RCU callback can be multiple seconds. Multiple. Seconds. 😭 So use the hurry one, bestie.

The first argument tells Tiny RCU’s _wait_rcu_gp not to bother waiting for RCU. The reason for this is because anywhere synchronize_rcu_mult can be called is automatically already a full grace period. The way that works out is genuinely a little iconic. πŸ‘‘


🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/rcupdate_wait.h β€” go peek, iykyk. πŸ¦‹

Sign-off time, bestie: this page’s source/version footer lives under ./include/linux, dated October 2026. Periodt. πŸ’…πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from