pub struct LocalLock<T> { /* private fields */ }Expand description
One RT lock and protected value per possible CPU.
Acquisition first pins migration, then selects that CPU’s lock. Tasks on the same CPU may preempt one another and synchronize through PI contention.
Implementations§
Source§impl<T> LocalLock<T>
impl<T> LocalLock<T>
Sourcepub fn new(init: impl FnMut(CpuId) -> T) -> Result<LocalLock<T>, TaskError>
pub fn new(init: impl FnMut(CpuId) -> T) -> Result<LocalLock<T>, TaskError>
Initializes one protected value for every configured CPU.
Sourcepub fn lock(&self) -> LocalLockGuard<'_, T>
pub fn lock(&self) -> LocalLockGuard<'_, T>
Acquires the calling task’s CPU-local value in preemptible task context.
Sourcepub fn try_lock(&self) -> Option<LocalLockGuard<'_, T>>
pub fn try_lock(&self) -> Option<LocalLockGuard<'_, T>>
Attempts acquisition without sleeping.
Sourcepub fn lock_irqsave(&self) -> LocalLockGuard<'_, T>
pub fn lock_irqsave(&self) -> LocalLockGuard<'_, T>
RT IRQ-save spelling; hardware IRQ state is unchanged.
Sourcepub fn try_lock_irqsave(&self) -> Option<LocalLockGuard<'_, T>>
pub fn try_lock_irqsave(&self) -> Option<LocalLockGuard<'_, T>>
RT IRQ-save spelling; hardware IRQ state is unchanged.
Auto Trait Implementations§
impl<T> !RefUnwindSafe for LocalLock<T>
impl<T> Freeze for LocalLock<T>
impl<T> Send for LocalLock<T>
impl<T> Sync for LocalLock<T>
impl<T> Unpin for LocalLock<T>
impl<T> UnsafeUnpin for LocalLock<T>
impl<T> UnwindSafe for LocalLock<T>
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