pub struct RawMutexGuard<M: RawMutex + 'static>(/* private fields */);Expand description
All OSAL trait definitions for advanced usage.
RAII guard for a 'static RawMutex implementation.
Locks the mutex on construction and unlocks it on drop, so callers only
need to hold on to the guard for the duration of the critical section.
This is intended for the common pattern of a module-level
static mut Option<M> mutex guarding a module-level static mut resource,
e.g. obtained via access_static_option!.
§Examples
ⓘ
use osal_rs::traits::RawMutexGuard;
use osal_rs::{access_static_option, os::RawMutex};
static mut MUTEX: Option<RawMutex> = None;
fn critical_section() {
let _lock = RawMutexGuard::acquire(access_static_option!(MUTEX));
// protected code here, lock released when `_lock` drops
}Implementations§
Source§impl<M: RawMutex + 'static> RawMutexGuard<M>
impl<M: RawMutex + 'static> RawMutexGuard<M>
Sourcepub fn acquire(mutex: &'static M) -> Self
pub fn acquire(mutex: &'static M) -> Self
Locks mutex and returns a guard that unlocks it on drop.
Sourcepub fn acquire_from_isr(mutex: &'static M) -> Self
pub fn acquire_from_isr(mutex: &'static M) -> Self
Locks mutex via RawMutex::lock_from_isr instead of
RawMutex::lock, and returns a guard that unlocks the same way on
drop. Use this instead of RawMutexGuard::acquire when the calling
context is (or might be) an interrupt handler.
Trait Implementations§
Source§impl<M: RawMutex + 'static> Drop for RawMutexGuard<M>
impl<M: RawMutex + 'static> Drop for RawMutexGuard<M>
Auto Trait Implementations§
impl<M> Freeze for RawMutexGuard<M>
impl<M> RefUnwindSafe for RawMutexGuard<M>where
M: RefUnwindSafe,
impl<M> Send for RawMutexGuard<M>where
M: Sync,
impl<M> Sync for RawMutexGuard<M>where
M: Sync,
impl<M> Unpin for RawMutexGuard<M>
impl<M> UnsafeUnpin for RawMutexGuard<M>
impl<M> UnwindSafe for RawMutexGuard<M>where
M: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more