pub struct LockdepTracked<L: RawLock, P = <L as RawLock>::DefaultPolicy, const LOCK_FLAGS: LockFlags = { lockdep::LOCK_FLAGS_NONE }> { /* private fields */ }Expand description
Wraps a RawLock and LockPolicy with optional lockdep tracking state.
Implementations§
Source§impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
Source§impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
Sourcepub const LOCK_FLAGS: LockFlags = LOCK_FLAGS
pub const LOCK_FLAGS: LockFlags = LOCK_FLAGS
Flags specifying validation rules for the lock class.
Source§impl<L: ConstRawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
impl<L: ConstRawLock, P, const LOCK_FLAGS: LockFlags> LockdepTracked<L, P, LOCK_FLAGS>
pub const INIT: Self
Sourcepub const fn const_init(_class_id: *const c_void) -> Self
pub const fn const_init(_class_id: *const c_void) -> Self
Statically initializes a LockdepTracked lock in constant context.
Trait Implementations§
Source§impl<L: ConstRawLock, P: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> ConstRawLock for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: ConstRawLock, P: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> ConstRawLock for LockdepTracked<L, P, LOCK_FLAGS>
Source§impl<L: ConstRawLock, P, const LOCK_FLAGS: LockFlags> Default for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: ConstRawLock, P, const LOCK_FLAGS: LockFlags> Default for LockdepTracked<L, P, LOCK_FLAGS>
Source§impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> Deref for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> Deref for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P: ExclusiveLockPolicy<L>, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> ExclusiveLockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> ExclusiveLockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for IrqSavePolicywhere
IrqSavePolicy: ExclusiveLockPolicy<L>,
impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> ExclusiveLockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for NoIrqSavePolicywhere
NoIrqSavePolicy: ExclusiveLockPolicy<L>,
Source§impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> HasPinData for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P, const LOCK_FLAGS: LockFlags> HasPinData for LockdepTracked<L, P, LOCK_FLAGS>
Source§impl<L: RawLock, P: LockPolicy<L>, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P: LockPolicy<L>, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for LockdepTracked<L, P, LOCK_FLAGS>
Source§type AcquireArgs = <P as LockPolicy<L>>::AcquireArgs
type AcquireArgs = <P as LockPolicy<L>>::AcquireArgs
Arguments passed when acquiring the lock under this policy.
Source§type GuardState = LockdepTrackedGuardState<<P as LockPolicy<L>>::GuardState>
type GuardState = LockdepTrackedGuardState<<P as LockPolicy<L>>::GuardState>
State stored in the pinned guard across lock acquisition and release.
Source§unsafe fn pre_validate(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn pre_validate( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Performs any pre-validation setup (such as disabling and saving interrupts) before
lockdep validation runs. Read more
Source§unsafe fn pre_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn pre_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-runs pre-validation on an existing
GuardState before re-acquiring the lock (e.g. in
call_unlocked). Read moreSource§unsafe fn acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock. Read more
Source§unsafe fn post_validate_acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn post_validate_acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock after
pre_validate and
lockdep validation have completed. Read moreSource§unsafe fn reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock using existing guard state (e.g. after
call_unlocked). Read moreSource§unsafe fn post_validate_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn post_validate_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock after
pre_reacquire and
lockdep validation have completed. Read moreSource§unsafe fn untrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn untrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Temporarily untracks the held lock in lockdep (used by
call_untracked). Read moreSource§unsafe fn retrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn retrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Source§unsafe fn release(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn release( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Releases the raw synchronization lock, restoring the state. Read more
Source§impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for IrqSavePolicywhere
IrqSavePolicy: LockPolicy<L>,
impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for IrqSavePolicywhere
IrqSavePolicy: LockPolicy<L>,
Source§type AcquireArgs = <IrqSavePolicy as LockPolicy<L>>::AcquireArgs
type AcquireArgs = <IrqSavePolicy as LockPolicy<L>>::AcquireArgs
Arguments passed when acquiring the lock under this policy.
Source§type GuardState = LockdepTrackedGuardState<<IrqSavePolicy as LockPolicy<L>>::GuardState>
type GuardState = LockdepTrackedGuardState<<IrqSavePolicy as LockPolicy<L>>::GuardState>
State stored in the pinned guard across lock acquisition and release.
Source§unsafe fn pre_validate(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn pre_validate( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Performs any pre-validation setup (such as disabling and saving interrupts) before
lockdep validation runs. Read more
Source§unsafe fn pre_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn pre_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-runs pre-validation on an existing
GuardState before re-acquiring the lock (e.g. in
call_unlocked). Read moreSource§unsafe fn acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock. Read more
Source§unsafe fn post_validate_acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn post_validate_acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock after
pre_validate and
lockdep validation have completed. Read moreSource§unsafe fn reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock using existing guard state (e.g. after
call_unlocked). Read moreSource§unsafe fn post_validate_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn post_validate_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock after
pre_reacquire and
lockdep validation have completed. Read moreSource§unsafe fn untrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn untrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Temporarily untracks the held lock in lockdep (used by
call_untracked). Read moreSource§unsafe fn retrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn retrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Source§unsafe fn release(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn release( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Releases the raw synchronization lock, restoring the state. Read more
Source§impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for NoIrqSavePolicywhere
NoIrqSavePolicy: LockPolicy<L>,
impl<L: RawLock, LP: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> LockPolicy<LockdepTracked<L, LP, LOCK_FLAGS>> for NoIrqSavePolicywhere
NoIrqSavePolicy: LockPolicy<L>,
Source§type AcquireArgs = <NoIrqSavePolicy as LockPolicy<L>>::AcquireArgs
type AcquireArgs = <NoIrqSavePolicy as LockPolicy<L>>::AcquireArgs
Arguments passed when acquiring the lock under this policy.
Source§type GuardState = LockdepTrackedGuardState<<NoIrqSavePolicy as LockPolicy<L>>::GuardState>
type GuardState = LockdepTrackedGuardState<<NoIrqSavePolicy as LockPolicy<L>>::GuardState>
State stored in the pinned guard across lock acquisition and release.
Source§unsafe fn pre_validate(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn pre_validate( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Performs any pre-validation setup (such as disabling and saving interrupts) before
lockdep validation runs. Read more
Source§unsafe fn pre_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn pre_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-runs pre-validation on an existing
GuardState before re-acquiring the lock (e.g. in
call_unlocked). Read moreSource§unsafe fn acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock. Read more
Source§unsafe fn post_validate_acquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
args: Self::AcquireArgs,
)
unsafe fn post_validate_acquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, args: Self::AcquireArgs, )
Acquires the raw synchronization lock after
pre_validate and
lockdep validation have completed. Read moreSource§unsafe fn reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock using existing guard state (e.g. after
call_unlocked). Read moreSource§unsafe fn post_validate_reacquire(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn post_validate_reacquire( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Re-acquires the raw synchronization lock after
pre_reacquire and
lockdep validation have completed. Read moreSource§unsafe fn untrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn untrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Temporarily untracks the held lock in lockdep (used by
call_untracked). Read moreSource§unsafe fn retrack(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn retrack( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Source§unsafe fn release(
lock: &LockdepTracked<L, LP, LOCK_FLAGS>,
state: &mut Self::GuardState,
)
unsafe fn release( lock: &LockdepTracked<L, LP, LOCK_FLAGS>, state: &mut Self::GuardState, )
Releases the raw synchronization lock, restoring the state. Read more
Source§impl<L: RawLock, P: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> RawLock for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock, P: ExclusiveLockPolicy<L>, const LOCK_FLAGS: LockFlags> RawLock for LockdepTracked<L, P, LOCK_FLAGS>
Source§type DefaultPolicy = LockdepTracked<L, P, LOCK_FLAGS>
type DefaultPolicy = LockdepTracked<L, P, LOCK_FLAGS>
Default policy that should be used when acquiring this lock.
Source§unsafe fn init(class_id: *const c_void) -> impl PinInit<Self, Infallible>
unsafe fn init(class_id: *const c_void) -> impl PinInit<Self, Infallible>
Returns a PinInit block to initialize the raw lock in-place. Read more
Source§fn as_mut_ptr(&self) -> *mut c_void
fn as_mut_ptr(&self) -> *mut c_void
Convert the raw lock reference to a standard c_void pointer for FFI.
impl<L: RawLock + Send, P, const LOCK_FLAGS: LockFlags> Send for LockdepTracked<L, P, LOCK_FLAGS>
impl<L: RawLock + Sync, P, const LOCK_FLAGS: LockFlags> Sync for LockdepTracked<L, P, LOCK_FLAGS>
Auto Trait Implementations§
impl<L, P, const LOCK_FLAGS: u16> Freeze for LockdepTracked<L, P, LOCK_FLAGS>where
L: Freeze,
PhantomData<P>: Freeze,
impl<L, P, const LOCK_FLAGS: u16> RefUnwindSafe for LockdepTracked<L, P, LOCK_FLAGS>where
L: RefUnwindSafe,
PhantomData<P>: RefUnwindSafe,
impl<L, P, const LOCK_FLAGS: u16> UnsafeUnpin for LockdepTracked<L, P, LOCK_FLAGS>where
L: UnsafeUnpin,
PhantomData<P>: UnsafeUnpin,
impl<L, P, const LOCK_FLAGS: u16> UnwindSafe for LockdepTracked<L, P, LOCK_FLAGS>where
L: UnwindSafe,
PhantomData<P>: UnwindSafe,
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
Source§impl<T> PinInit<T> for T
impl<T> PinInit<T> for T
Source§unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), !>
unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), !>
Initializes
slot. Read moreSource§fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>where
F: FnOnce(Pin<&mut T>) -> Result<(), E>,
fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>where
F: FnOnce(Pin<&mut T>) -> Result<(), E>,
First initializes the value using
self then calls the function f with the initialized
value. Read more