rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/13] hrtimer Rust API
@ 2024-10-17 13:04 Andreas Hindborg
  2024-10-17 13:04 ` [PATCH v3 01/13] rust: time: Add Ktime::from_ns() Andreas Hindborg
                   ` (13 more replies)
  0 siblings, 14 replies; 32+ messages in thread
From: Andreas Hindborg @ 2024-10-17 13:04 UTC (permalink / raw)
  To: Miguel Ojeda, Anna-Maria Behnsen, Frederic Weisbecker,
	Thomas Gleixner
  Cc: Alex Gaynor, Boqun Feng, Gary Guo, Björn Roy Baron,
	Benno Lossin, Alice Ryhl, Trevor Gross, Lyude Paul,
	rust-for-linux, linux-kernel, Andreas Hindborg

This series adds support for using the `hrtimer` subsystem from Rust code.

This version adds support for timer mode and clock source configuration during
timer initialization. Examples and functionality to execute closures at timer
expiration has been removed, as these depend on either atomics [3] or
`SpinLockIrq` [4], which are still being worked on.

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]
Link: https://lore.kernel.org/rust-for-linux/20240612223025.1158537-1-boqun.feng@gmail.com/ [3]
Link: https://lore.kernel.org/rust-for-linux/20240916213025.477225-1-lyude@redhat.com/ [4]
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
---
Changes in v3:
- support timer mode selection
- support clock source selection
- eliminate `Arc::clone_from_raw` in favor of using `ArcBorrow`
- make `Arc::as_ptr` an associated method
- update safety requirement for `ArcBorrow::from_raw`
- remove examples (pending `SpinLockIrq` and `CondVar` patches)
- remove `start_function` (v2 `schedule_function`, pending `SpinLockIrq` and `CondVar` patches)
- change function naming from schedule/armed to start/running
- add vocabulary to documentation
- update safety comment in `Arc::as_ptr`
- Link to v2: https://lore.kernel.org/r/20240917222739.1298275-1-a.hindborg@kernel.org

Changes in v2:
- 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
- Link to v1: https://lore.kernel.org/r/20240425094634.262674-1-nmi@metaspace.dk

---
Andreas Hindborg (12):
      rust: hrtimer: introduce hrtimer support
      rust: sync: add `Arc::as_ptr`
      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: implement `TimerPointer` for `Pin<Box<T>>`
      rust: hrtimer: add `TimerMode`
      rust: hrtimer: add clocksource selection through `ClockSource`
      rust: hrtimer: add maintainer entry

Lyude Paul (1):
      rust: time: Add Ktime::from_ns()

 MAINTAINERS                    |  10 +
 rust/kernel/hrtimer.rs         | 530 +++++++++++++++++++++++++++++++++++++++++
 rust/kernel/hrtimer/arc.rs     |  87 +++++++
 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        |  13 +-
 rust/kernel/time.rs            |   8 +
 9 files changed, 938 insertions(+), 2 deletions(-)
---
base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
change-id: 20241017-hrtimer-v3-v6-12-rc2-215dc6b169bf

Best regards,
-- 
Andreas Hindborg <a.hindborg@kernel.org>



^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2024-12-09 21:36 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-17 13:04 [PATCH v3 00/13] hrtimer Rust API Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 01/13] rust: time: Add Ktime::from_ns() Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 02/13] rust: hrtimer: introduce hrtimer support Andreas Hindborg
2024-11-07  1:55   ` Thomas Gleixner
2024-11-20 11:41     ` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 03/13] rust: sync: add `Arc::as_ptr` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 04/13] rust: hrtimer: implement `TimerPointer` for `Arc` Andreas Hindborg
2024-11-13 23:24   ` Lyude Paul
2024-11-20 15:22     ` Andreas Hindborg
2024-11-22 12:36       ` Miguel Ojeda
2024-11-22 16:24         ` Daniel Almeida
2024-12-04 13:41         ` Andreas Hindborg
2024-12-09 21:36           ` Miguel Ojeda
2024-10-17 13:04 ` [PATCH v3 05/13] rust: hrtimer: allow timer restart from timer handler Andreas Hindborg
2024-10-20 16:46   ` kernel test robot
2024-10-17 13:04 ` [PATCH v3 06/13] rust: hrtimer: add `UnsafeTimerPointer` Andreas Hindborg
2024-11-13 23:27   ` Lyude Paul
2024-11-20 15:25     ` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 07/13] rust: hrtimer: implement `UnsafeTimerPointer` for `Pin<&T>` Andreas Hindborg
2024-11-13 23:30   ` Lyude Paul
2024-11-20 15:48     ` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 08/13] rust: hrtimer: implement `UnsafeTimerPointer` for `Pin<&mut T>` Andreas Hindborg
2024-11-13 23:33   ` Lyude Paul
2024-10-17 13:04 ` [PATCH v3 09/13] rust: hrtimer: add `hrtimer::ScopedTimerPointer` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 10/13] rust: hrtimer: implement `TimerPointer` for `Pin<Box<T>>` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 11/13] rust: hrtimer: add `TimerMode` Andreas Hindborg
2024-11-13 23:37   ` Lyude Paul
2024-11-20 15:51     ` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 12/13] rust: hrtimer: add clocksource selection through `ClockSource` Andreas Hindborg
2024-10-17 13:04 ` [PATCH v3 13/13] rust: hrtimer: add maintainer entry Andreas Hindborg
2024-11-13 23:39 ` [PATCH v3 00/13] hrtimer Rust API Lyude Paul
2024-11-20 15:58   ` Andreas Hindborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).