[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240917222739.1298275-1-a.hindborg@kernel.org>
Date: Wed, 18 Sep 2024 00:27:24 +0200
From: Andreas Hindborg <a.hindborg@...nel.org>
To: Miguel Ojeda <ojeda@...nel.org>,
Alex Gaynor <alex.gaynor@...il.com>,
Anna-Maria Behnsen <anna-maria@...utronix.de>,
Frederic Weisbecker <frederic@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>
Cc: Andreas Hindborg <a.hindborg@...nel.org>,
Boqun Feng <boqun.feng@...il.com>,
Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <benno.lossin@...ton.me>,
Alice Ryhl <aliceryhl@...gle.com>,
rust-for-linux@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v2 00/14] hrtimer Rust API
Hi!
This series adds support for using the `hrtimer` subsystem from Rust code.
I tried breaking up the code in some smaller patches, hopefully that will
ease the review process a bit.
The major change in this series is the use of a handle to carry ownership
of the callback target. In v1, we used the armed timer to carry ownership
of the callback target. This caused issues when the live timer became the
last owner of the callback target, because the target would be dropped in
timer callback context. That is solved by using a handle instead.
A request from Thomas on v1 was to add a more complete API. While I did add
more features, we are still missing some. In the interest of getting the
patches on list prior to LPC 2024, I am leaving out the following planned
features:
- hrtimer_sleeper, schedule_hrtimeout, hrtimer_nanosleep and friends
- introspection functions:
- try_cancel
- get_remaining
- active
- queued
- callback_running
- hrtimer_forward
- access to timer callback target through timer handle
I plan to add these features in the comming months. Adding the above
features should not cause much churn, and pending positive review, I see no
reason to not pick up this series first.
To make it absolutely clear that I am willing to maintain the code I
submit, I added a mantainer entry in the last patch. Feel free to drop it,
if you want to make other arrangements.
---
Changes from v1:
- use a handle to own the timer callback target
- add ability to for callback to reschedule timer
- improve `impl_has_timer` to allow generics
- add support for stack allocated timers
- add support for scheduling closures
- use `Ktime` for setting expiration
- use `CondVar` instead of `AtomicBool` in examples
- rebase on 6.11
- improve documentation
This series is a dependency for unmerged features of the Rust null block driver
[1], and for rkvms [2].
Link: https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.11-rc2 [1]
Link: https://gitlab.freedesktop.org/lyudess/linux/-/tree/rvkms-wip [2]
---
Andreas Hindborg (13):
rust: hrtimer: introduce hrtimer support
rust: sync: add `Arc::as_ptr`
rust: sync: add `Arc::clone_from_raw`
rust: hrtimer: implement `TimerPointer` for `Arc`
rust: hrtimer: allow timer restart from timer handler
rust: hrtimer: add `UnsafeTimerPointer`
rust: hrtimer: implement `UnsafeTimerPointer` for `Pin<&T>`
rust: hrtimer: implement `UnsafeTimerPointer` for `Pin<&mut T>`
rust: hrtimer: add `hrtimer::ScopedTimerPointer`
rust: hrtimer: allow specifying a distinct callback parameter
rust: hrtimer: implement `TimerPointer` for `Pin<Box<T>>`
rust: hrtimer: add `schedule_function` to schedule closures
rust: hrtimer: add maintainer entry
Lyude Paul (1):
rust: time: Add Ktime::from_ns()
MAINTAINERS | 10 +
rust/kernel/hrtimer.rs | 550 +++++++++++++++++++++++++++++++++
rust/kernel/hrtimer/arc.rs | 86 ++++++
rust/kernel/hrtimer/closure.rs | 72 +++++
rust/kernel/hrtimer/pin.rs | 97 ++++++
rust/kernel/hrtimer/pin_mut.rs | 99 ++++++
rust/kernel/hrtimer/tbox.rs | 95 ++++++
rust/kernel/lib.rs | 1 +
rust/kernel/sync/arc.rs | 28 ++
rust/kernel/time.rs | 8 +
10 files changed, 1046 insertions(+)
create mode 100644 rust/kernel/hrtimer.rs
create mode 100644 rust/kernel/hrtimer/arc.rs
create mode 100644 rust/kernel/hrtimer/closure.rs
create mode 100644 rust/kernel/hrtimer/pin.rs
create mode 100644 rust/kernel/hrtimer/pin_mut.rs
create mode 100644 rust/kernel/hrtimer/tbox.rs
base-commit: 98f7e32f20d28ec452afb208f9cffc08448a2652
--
2.46.0
Powered by blists - more mailing lists