pub struct Work<T: ?Sized, const ID: u64 = 0> { /* private fields */ }Expand description
Links for a work item.
This struct contains a function pointer to the run function from the WorkItemPointer
trait, and defines the linked list pointers necessary to enqueue a work item in a workqueue.
Wraps the kernel’s C struct work_struct.
This is a helper type used to associate a work_struct with the WorkItem that uses it.
Implementations§
source§impl<T: ?Sized, const ID: u64> Work<T, ID>
impl<T: ?Sized, const ID: u64> Work<T, ID>
sourcepub fn project<'__pin>(
self: Pin<&'__pin mut Self>
) -> WorkProjection<'__pin, T, ID>
pub fn project<'__pin>( self: Pin<&'__pin mut Self> ) -> WorkProjection<'__pin, T, ID>
Pin-projects all fields of Self.
These fields are structurally pinned:
work
These fields are not structurally pinned:
_inner
source§impl<T: ?Sized, const ID: u64> Work<T, ID>
impl<T: ?Sized, const ID: u64> Work<T, ID>
sourcepub fn new(
name: &'static CStr,
key: Pin<&'static LockClassKey>
) -> impl PinInit<Self>where
T: WorkItem<ID>,
pub fn new(
name: &'static CStr,
key: Pin<&'static LockClassKey>
) -> impl PinInit<Self>where
T: WorkItem<ID>,
Creates a new instance of Work.
sourcepub unsafe fn raw_get(ptr: *const Self) -> *mut work_struct
pub unsafe fn raw_get(ptr: *const Self) -> *mut work_struct
Get a pointer to the inner work_struct.
§Safety
The provided pointer must not be dangling and must be properly aligned. (But the memory need not be initialized.)
Trait Implementations§
source§impl<T: ?Sized, const ID: u64> HasPinData for Work<T, ID>
impl<T: ?Sized, const ID: u64> HasPinData for Work<T, ID>
type PinData = __ThePinData<T, ID>
unsafe fn __pin_data() -> Self::PinData
impl<T: ?Sized, const ID: u64> Send for Work<T, ID>
impl<T: ?Sized, const ID: u64> Sync for Work<T, ID>
Auto Trait Implementations§
impl<T, const ID: u64 = 0> !Freeze for Work<T, ID>
impl<T, const ID: u64 = 0> !RefUnwindSafe for Work<T, ID>
impl<T: ?Sized, const ID: u64> UnwindSafe for Work<T, ID>where
T: UnwindSafe,
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
source§impl<T> PinInit<T> for T
impl<T> PinInit<T> for T
source§unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), Infallible>
unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), Infallible>
Initializes
slot. Read more