pub struct IrqSpinlock<T> { /* private fields */ }Expand description
中断安全的互斥锁
在持有锁期间会自动禁用中断,适用于内核临界区保护。
Implementations§
Source§impl<T> IrqSpinlock<T>
impl<T> IrqSpinlock<T>
Sourcepub const fn empty() -> IrqSpinlock<()>
pub const fn empty() -> IrqSpinlock<()>
创建一个空的IrqSpinlock
Sourcepub fn lock(&self) -> IrqMutexGuard<'_, T>
pub fn lock(&self) -> IrqMutexGuard<'_, T>
Sourcepub fn try_lock(&self) -> Option<IrqMutexGuard<'_, T>>
pub fn try_lock(&self) -> Option<IrqMutexGuard<'_, T>>
尝试获取锁,如果失败则立即返回
这个方法不会自旋等待,而是立即返回结果。 如果成功获取锁,中断也会被禁用,直到守卫被drop。
§Returns
Some(guard)- 成功获取锁时的守卫,中断已禁用None- 锁已被占用时,中断状态不变
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Sourcepub unsafe fn lock_raw(&self) -> &IrqRawSpinlock
pub unsafe fn lock_raw(&self) -> &IrqRawSpinlock
Trait Implementations§
impl<T: Send> Send for IrqSpinlock<T>
impl<T: Send> Sync for IrqSpinlock<T>
Auto Trait Implementations§
impl<T> !Freeze for IrqSpinlock<T>
impl<T> !RefUnwindSafe for IrqSpinlock<T>
impl<T> Unpin for IrqSpinlock<T>where
T: Unpin,
impl<T> UnwindSafe for IrqSpinlock<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> Background for T
impl<T> Background for T
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