lkml.org 
[lkml]   [2023]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
Subject[PATCH v1 0/7] Bindings for the workqueue
From
This patchset contains bindings for the kernel workqueue.

One of the primary goals behind the design used in this patch is that we
must support embedding the `work_struct` as a field in user-provided
types, because this allows you to submit things to the workqueue without
having to allocate, making the submission infallible. If we didn't have
to support this, then the patch would be much simpler. One of the main
things that make it complicated is that we must ensure that the function
pointer in the `work_struct` is compatible with the struct it is
contained within.

This patch could be significantly simplified if we already had the field
projection bindings. However, we have decided to upstream the current
version that does not depend on field projection first - the PR that
introduces field projections will then include a commit that simplifies
the workqueue implementation. (In particular, it would simplify the 5th
patch in this series.)

The first version of the workqueue bindings was written by Wedson, but
I have rewritten much of it so that it uses the pin-init infrastructure
and can be used with containers other than `Arc`.

Alice Ryhl (4):
rust: workqueue: add low-level workqueue bindings
rust: workqueue: add helper for defining work_struct fields
rust: workqueue: add safe API to workqueue
rust: workqueue: add `try_spawn` helper method

Wedson Almeida Filho (3):
rust: add offset_of! macro
rust: sync: add `Arc::{from_raw, into_raw}`
rust: workqueue: define built-in queues

rust/helpers.c | 8 +
rust/kernel/lib.rs | 37 ++
rust/kernel/sync/arc.rs | 44 +++
rust/kernel/workqueue.rs | 715 +++++++++++++++++++++++++++++++++++++++
scripts/Makefile.build | 2 +-
5 files changed, 805 insertions(+), 1 deletion(-)
create mode 100644 rust/kernel/workqueue.rs


base-commit: ac9a78681b921877518763ba0e89202254349d1b
--
2.40.1.606.ga4b1b128d6-goog

\
 
 \ /
  Last update: 2023-05-17 22:32    [W:0.232 / U:1.356 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site