diff options
| author | Lyude Paul <lyude@redhat.com> | 2025-08-21 15:32:45 -0400 |
|---|---|---|
| committer | Andreas Hindborg <a.hindborg@kernel.org> | 2025-09-04 16:54:39 +0200 |
| commit | ac0a7bd27f6593dfe9ea6b65538bebbbd8322241 (patch) | |
| tree | 9cc229ff1ee2d705ffbbe90946c6d2b2009e991d | |
| parent | 3f2a5ba784b808109cac0aac921213e43143a216 (diff) | |
rust: hrtimer: Add forward_now() to HrTimer and HrTimerCallbackContext
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>
Link: https://lore.kernel.org/r/20250821193259.964504-6-lyude@redhat.com
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
| -rw-r--r-- | rust/kernel/time/hrtimer.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/rust/kernel/time/hrtimer.rs b/rust/kernel/time/hrtimer.rs index 1e8839d27729..e0d78a885990 100644 --- a/rust/kernel/time/hrtimer.rs +++ b/rust/kernel/time/hrtimer.rs @@ -212,6 +212,17 @@ impl<T> HrTimer<T> { // valid `Self` that we have exclusive access to. unsafe { Self::raw_forward(this, now, interval) } } + + /// Conditionally forward the timer. + /// + /// This is a variant of [`forward()`](Self::forward) that uses an interval after the current + /// time of the base clock for the [`HrTimer`]. + pub fn forward_now(self: Pin<&mut Self>, interval: Delta) -> u64 + where + T: HasHrTimer<T>, + { + self.forward(HrTimerInstant::<T>::now(), interval) + } } /// Implemented by pointer types that point to structs that contain a [`HrTimer`]. @@ -687,6 +698,14 @@ impl<'a, T: HasHrTimer<T>> HrTimerCallbackContext<'a, T> { // - By our type invariants, `self.0` always points to a valid `HrTimer<T>` unsafe { HrTimer::<T>::raw_forward(self.0.as_ptr(), now, interval) } } + + /// Conditionally forward the timer. + /// + /// This is a variant of [`HrTimerCallbackContext::forward()`] that uses an interval after the + /// current time of the base clock for the [`HrTimer`]. + pub fn forward_now(&mut self, duration: Delta) -> u64 { + self.forward(HrTimerInstant::<T>::now(), duration) + } } /// Use to implement the [`HasHrTimer<T>`] trait. |