lkml.org 
[lkml]   [2023]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    Subject[PATCH v2 0/8] rust: workqueue: add 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.

    The original 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`.

    Changes since v1:

    Most of this patchset was rewritten based on Gary's example for how
    field projections can be used with the workqueue.

    I have also added some examples of how the workqueue bindings will be
    used. You can find those in the last patch of this patchset.

    v1: https://lore.kernel.org/all/20230517203119.3160435-1-aliceryhl@google.com/

    Alice Ryhl (5):
    rust: workqueue: add low-level workqueue bindings
    rust: workqueue: add helper for defining work_struct fields
    rust: workqueue: implement `WorkItemPointer` for pointer types
    rust: workqueue: add `try_spawn` helper method
    rust: workqueue: add examples

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

    rust/bindings/bindings_helper.h | 1 +
    rust/helpers.c | 8 +
    rust/kernel/lib.rs | 37 ++
    rust/kernel/sync/arc.rs | 42 ++-
    rust/kernel/workqueue.rs | 631 ++++++++++++++++++++++++++++++++
    scripts/Makefile.build | 2 +-
    6 files changed, 719 insertions(+), 2 deletions(-)
    create mode 100644 rust/kernel/workqueue.rs


    base-commit: d09a61024f6b78c6a08892fc916cdafd87b50365
    --
    2.41.0.rc0.172.g3f132b7071-goog

    \
     
     \ /
      Last update: 2023-06-01 15:50    [W:4.104 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site