Re: [PATCH 1/3] rust: sync: Add abstraction for synchronize_rcu()
Philipp Stanner <[email protected]>
| Newsgroups | org.kernel.vger.rcu,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 2026-06-18 at 11:59 +0200, Philipp Stanner wrote: > synchronize_rcu() is a frequently used C function which is always safe > to be called. > > Add a safe abstraction for synchronize_rcu(). > > Signed-off-by: Philipp Stanner <[email protected]> > --- > rust/kernel/sync/rcu.rs | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/rust/kernel/sync/rcu.rs b/rust/kernel/sync/rcu.rs > index a32bef6e490b..9b9addf8fedf 100644 > --- a/rust/kernel/sync/rcu.rs > +++ b/rust/kernel/sync/rcu.rs > @@ -50,3 +50,11 @@ fn drop(&mut self) { > pub fn read_lock() -> Guard { > Guard::new() > } > + > +/// Wait for one RCU grace period. > +/// > +/// You typically do this to wait for everyone holding a [`Guard`]. > +pub fn synchronize_rcu() { Hm, should it actually be #[inline]? In C nowadays usage of inline is discouraged ("compiler knows better"). Unsure how Rust handles it; is its compiler different? Moreover, this would be an opportunity to change the naming convention to rcu::synchronize() But since Boqun & Alice are pushing for rcu::RcuKBox for the reason that it seems desirable to explicitly highlight that that's a special Box, I guess we should be consistent with that and also have "rcu" in the name here. P. > + // SAFETY: `synchronize_rcu()` is always safe to be called. It just waits for a grace period. > + unsafe { bindings::synchronize_rcu() }; > +}