mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-28 08:44:29 -04:00
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:
committed by
Boqun Feng
parent
1c7efabfba
commit
1fb92e0625
@@ -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() };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user