Miguel Ojeda
e6ea10d5db
Merge tag 'rust-hrtimer-for-v6.15-v3' of https://github.com/Rust-for-Linux/linux into rust-next
...
Pull rust-hrtimer updates from Andreas Hindborg:
"Introduce Rust support for the 'hrtimer' subsystem:
- Add a way to use the 'hrtimer' subsystem from Rust. Rust code can
now set up intrusive timers without allocating when starting the
timer.
- Add support for 'Pin<Box<_>>', 'Arc<_>', 'Pin<&_>' and
'Pin<&mut _>' as pointer types for use with timer callbacks.
- Add support for setting clock source and timer mode.
'kernel' crate:
- Add 'Arc::as_ptr' for converting an 'Arc' to a raw pointer. This is
a dependency for the 'hrtimer' API.
- Add 'Box::into_pin' for converting a 'Box<_>' into a 'Pin<Box<_>>'
to align with Rust 'alloc'. This is a dependency for the 'hrtimer'
API."
* tag 'rust-hrtimer-for-v6.15-v3' of https://github.com/Rust-for-Linux/linux :
rust: hrtimer: add maintainer entry
rust: hrtimer: add clocksource selection through `ClockId`
rust: hrtimer: add `HrTimerMode`
rust: hrtimer: implement `HrTimerPointer` for `Pin<Box<T>>`
rust: alloc: add `Box::into_pin`
rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&mut T>`
rust: hrtimer: implement `UnsafeHrTimerPointer` for `Pin<&T>`
rust: hrtimer: add `hrtimer::ScopedHrTimerPointer`
rust: hrtimer: add `UnsafeHrTimerPointer`
rust: hrtimer: allow timer restart from timer handler
rust: hrtimer: implement `HrTimerPointer` for `Arc`
rust: sync: add `Arc::as_ptr`
rust: hrtimer: introduce hrtimer support
2025-03-25 23:41:14 +01:00
Andreas Hindborg
aa33de03a3
rust: hrtimer: add clocksource selection through ClockId
...
Allow selecting a clock source for timers by passing a `ClockId`
variant to `HrTimer::new`.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-12-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
bfa3a410bf
rust: hrtimer: add HrTimerMode
...
Allow selection of timer mode by passing a `HrTimerMode` variant to
`HrTimer::new`.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-11-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
374b60a013
rust: hrtimer: implement HrTimerPointer for Pin<Box<T>>
...
Allow `Pin<Box<T>>` to be the target of a timer callback.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-10-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
042b0c7947
rust: hrtimer: implement UnsafeHrTimerPointer for Pin<&mut T>
...
Allow pinned mutable references to structs that contain a `HrTimer` node to
be scheduled with the `hrtimer` subsystem.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-8-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
582523d9de
rust: hrtimer: implement UnsafeHrTimerPointer for Pin<&T>
...
Allow pinned references to structs that contain a `HrTimer` node to be
scheduled with the `hrtimer` subsystem.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-7-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
f93b0d8360
rust: hrtimer: add hrtimer::ScopedHrTimerPointer
...
Add the trait `ScopedHrTimerPointer` to allow safe use of stack allocated
timers. Safety is achieved by pinning the stack in place while timers are
running.
Implement the trait for all types that implement `UnsafeHrTimerPointer`.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-6-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
a6968ce376
rust: hrtimer: add UnsafeHrTimerPointer
...
Add a trait to allow unsafely queuing stack allocated timers.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-5-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
94e05a66ea
rust: hrtimer: allow timer restart from timer handler
...
Allow timer handlers to report that they want a timer to be restarted after
the timer handler has finished executing.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Reviewed-by: Tamir Duberstein <tamird@gmail.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-4-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-22 12:08:54 +01:00
Andreas Hindborg
d7bf4786b5
rust: hrtimer: implement HrTimerPointer for Arc
...
Allow the use of intrusive `hrtimer` fields in structs that are managed by
an `Arc` by implementing `HrTimerPointer` and `RawTimerCallbck` for `Arc`.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-3-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-11 21:00:42 +01:00
Andreas Hindborg
8a8afe9349
rust: hrtimer: introduce hrtimer support
...
Add support for intrusive use of the hrtimer system. For now,
only add support for embedding one timer per Rust struct.
The hrtimer Rust API is based on the intrusive style pattern introduced by
the Rust workqueue API.
Acked-by: Frederic Weisbecker <frederic@kernel.org >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Benno Lossin <benno.lossin@proton.me >
Reviewed-by: Tamir Duberstein <tamird@gmail.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Link: https://lore.kernel.org/r/20250309-hrtimer-v3-v6-12-rc2-v12-1-73586e2bd5f1@kernel.org
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
2025-03-11 21:00:28 +01:00