aboutsummaryrefslogtreecommitdiffstats
path: root/rust/helpers/rbtree.c
diff options
context:
space:
mode:
authorFUJITA Tomonori <[email protected]>2025-06-10 13:28:22 +0000
committerAndreas Hindborg <[email protected]>2025-06-24 17:52:47 +0000
commite0c0ab04f6785abaa71b9b8dc252cb1a2072c225 (patch)
treeb32661b36faa36ca993ffa3cab2ca69da171fc69 /rust/helpers/rbtree.c
parentrust: time: Add HrTimerExpires trait (diff)
downloadkernel-e0c0ab04f6785abaa71b9b8dc252cb1a2072c225.tar.gz
kernel-e0c0ab04f6785abaa71b9b8dc252cb1a2072c225.zip
rust: time: Make HasHrTimer generic over HrTimerMode
Add a `TimerMode` associated type to the `HasHrTimer` trait to represent the operational mode of the timer, such as absolute or relative expiration. This new type must implement the `HrTimerMode` trait, which defines how expiration values are interpreted. Update the `start()` method to accept an `expires` parameter of type `<Self::TimerMode as HrTimerMode>::Expires` instead of the fixed `Ktime`. This enables different timer modes to provide strongly typed expiration values, such as `Instant<C>` or `Delta`. The `impl_has_hr_timer` macro is also 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. Signed-off-by: FUJITA Tomonori <[email protected]> Reviewed-by: Andreas Hindborg <[email protected]> Link: https://lore.kernel.org/r/[email protected] [ changed conversion method names to `as_*` - Andreas ] Signed-off-by: Andreas Hindborg <[email protected]>
Diffstat (limited to 'rust/helpers/rbtree.c')
0 files changed, 0 insertions, 0 deletions