Re: [PATCH v3 0/5] rust: time: Convert hrtimer to use Instant and Delta

From: FUJITA Tomonori
Date: Mon Jun 16 2025 - 18:07:41 EST


On Tue, 10 Jun 2025 22:28:18 +0900
FUJITA Tomonori <fujita.tomonori@xxxxxxxxx> wrote:

> Convert hrtimer to use `Instant` and `Delta`; remove the use of
> `Ktime` from the hrtimer code, which was originally introduced as a
> temporary workaround.
>
> hrtimer uses either an `Instant` or a `Delta` as its expiration value,
> depending on the mode specified at creation time. This patchset
> replaces `HrTimerMode` enum with a trait-based abstraction and
> associates each mode with either an `Instant` or a `Delta`. By
> leveraging Rust's type system, this change enables `HrTimer` to be
> statically associated with a specific `HrTimerMode`, the corresponding
> `Instant` or `Delta`, and a `ClockSource`.
>
> The `impl_has_hr_timer` macro is extended to allow specifying the
> `HrTimerMode`. In the following example, it guarantees that the
> `start()` method for `Foo` only accepts `Instant<Monotonic>`. Using a
> `Delta` or an `Instant` with a different clock source will result in a
> compile-time error:
>
> struct Foo {
> #[pin]
> timer: HrTimer<Self>,
> }
>
> impl_has_hr_timer! {
> impl HasHrTimer<Self> for Foo {
> mode : AbsoluteMode<Monotonic>,
> field : self.timer
> }
> }
>
> This design eliminates runtime mismatches between expires types and
> clock sources, and enables stronger type-level guarantees throughout
> hrtimer.
>
> This patchset can be applied on top of the typed clock sources patchset (v4):
>
> https://lore.kernel.org/lkml/20250610093258.3435874-1-fujita.tomonori@xxxxxxxxx/

Andreas, whenever you get a chance, could you create a
timekeeping-next branch and merge the typed clock sources patchset and
this?

That would make it easier for me to work on top of them.

Thanks a lot for the review!