rust: sync: Add abstraction for synchronize_rcu()

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 <phasta@kernel.org>
Reviewed-by: Onur Özkan <work@onurozkan.dev>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
[boqun: Fix rustdoc reported by kernel test robot <lkp@intel.com>]
Signed-off-by: Boqun Feng <boqun@kernel.org>
Link: https://patch.msgid.link/20260624150704.1504001-3-phasta@kernel.org
This commit is contained in:
Philipp Stanner
2026-06-24 17:07:02 +02:00
committed by Boqun Feng
parent 1c7efabfba
commit 1fb92e0625

View File

@@ -50,3 +50,19 @@ fn drop(&mut self) {
pub fn read_lock() -> Guard {
Guard::new()
}
/// Wait for one RCU grace period.
///
/// Waits for all RCU read-side critical sections (such as those established by
/// a [`Guard`]) at the moment of the function call to finish.
///
/// Does not prevent new read-side critical sections from starting, which may
/// begin and run while this call is blocking.
///
/// Note that this is one of the RCU primitives which must not be called in
/// atomic context.
#[inline]
pub fn synchronize_rcu() {
// SAFETY: `synchronize_rcu()` is always safe to be called from process context.
unsafe { bindings::synchronize_rcu() };
}