| From: |
| Onur Özkan <work-AT-onurozkan.dev> |
| To: |
| rust-for-linux-AT-vger.kernel.org |
| Subject: |
| [PATCH v7 0/6] rust: add `ww_mutex` support |
| Date: |
| Sat, 01 Nov 2025 19:10:50 +0300 |
| Message-ID: |
| <20251101161056.22408-1-work@onurozkan.dev> |
| Cc: |
| lossin-AT-kernel.org, lyude-AT-redhat.com, ojeda-AT-kernel.org, alex.gaynor-AT-gmail.com, boqun.feng-AT-gmail.com, gary-AT-garyguo.net, a.hindborg-AT-kernel.org, aliceryhl-AT-google.com, tmgross-AT-umich.edu, dakr-AT-kernel.org, peterz-AT-infradead.org, mingo-AT-redhat.com, will-AT-kernel.org, longman-AT-redhat.com, felipe_life-AT-live.com, daniel-AT-sedlak.dev, bjorn3_gh-AT-protonmail.com, daniel.almeida-AT-collabora.com, linux-kernel-AT-vger.kernel.org, Onur Özkan <work-AT-onurozkan.dev> |
| Archive-link: |
| Article |
Changes in v7:
- Split Class and AcquireCtx into separate modules.
- Removed "Ww" prefixes from type names.
- Renamed exec.rs -> lock_set.rs and ExecContext -> LockSet.
- Removed transmute logic from LockSet (formerly ExecContext).
- Improved various doc-comments.
- Marked certain AcquireCtx functions as unsafe.
- Added from_raw constructors for Mutex, MutexGuard, AcquireCtx
and Class.
- LockSet::cleanup_on_deadlock no longer triggers reallocations when
reinitializing AcquireCtx.
- Incorporated various minor improvements suggested on the v6 series.
Changes in v6:
- Added `unpinned_new` constructor for `WwClass` and updated
global macros.
- Changed all tests (and docs) to use Arc/KBox instead of
`stack_pin_init` for `WwMutex` and `WwAcquireCtx`.
- Added `LockKind` and `lock_common` helper to unify locking logic.
- Added context-based and context-free locking functions for `WwMutex`.
- Added `ww_mutex/exec` module, a high-level API with auto `EDEADLK`
handling mechanism.
Changes in v5:
- Addressed documentation review notes.
- Removed `unwrap()`s in examples and KUnit tests.
Onur Özkan (6):
rust: add C wrappers for ww_mutex inline functions
rust: implement `Class` for ww_class support
rust: error: add EDEADLK
rust: ww_mutex: add Mutex, AcquireCtx and MutexGuard
rust: ww_mutex: implement LockSet
rust: add test coverage for ww_mutex implementation
MAINTAINERS | 1 +
rust/helpers/helpers.c | 1 +
rust/helpers/ww_mutex.c | 39 ++
rust/kernel/error.rs | 1 +
rust/kernel/sync/lock.rs | 1 +
rust/kernel/sync/lock/ww_mutex.rs | 440 ++++++++++++++++++
rust/kernel/sync/lock/ww_mutex/acquire_ctx.rs | 211 +++++++++
rust/kernel/sync/lock/ww_mutex/class.rs | 156 +++++++
rust/kernel/sync/lock/ww_mutex/lock_set.rs | 410 ++++++++++++++++
9 files changed, 1260 insertions(+)
create mode 100644 rust/helpers/ww_mutex.c
create mode 100644 rust/kernel/sync/lock/ww_mutex.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/acquire_ctx.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/class.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/lock_set.rs
--
2.51.2