pub struct Work<T> { /* private fields */ }
Expand description
A basic Zephyr work item.
Holds a k_work
, along with the data associated with that work. When the work is queued, the
act
method will be called on the provided SimpleAction
.
Implementations§
Source§impl<T: SimpleAction + Send> Work<T>
impl<T: SimpleAction + Send> Work<T>
Sourcepub fn new(action: T) -> Pin<Arc<Self>>
pub fn new(action: T) -> Pin<Arc<Self>>
Construct a new Work from the given action.
Note that the data will be moved into the pinned Work. The data is internal, and only
accessible to the work thread (the act
method). If shared data is needed, normal
inter-thread sharing mechanisms are needed.
TODO: Can we come up with a way to allow sharing on the same worker using Rc instead of Arc?
Sourcepub fn submit(this: Pin<Arc<Self>>) -> Result<SubmitResult>
pub fn submit(this: Pin<Arc<Self>>) -> Result<SubmitResult>
Submit this work to the system work queue.
This can return several possible Ok
results. See the docs on SubmitResult
for an
explanation of them.
Sourcepub fn submit_to_queue(
this: Pin<Arc<Self>>,
queue: &WorkQueue,
) -> Result<SubmitResult>
pub fn submit_to_queue( this: Pin<Arc<Self>>, queue: &WorkQueue, ) -> Result<SubmitResult>
Submit this work to a specified work queue.
TODO: Change when we have better wrappers for work queues.
Trait Implementations§
impl<F> Send for Work<F>where
F: SimpleAction + Send,
SAFETY: Work queues can be sent as long as the action itself can be.
impl<F> Sync for Work<F>where
F: SimpleAction + Sync,
SAFETY: Work queues are Sync when the action is.