diff mbox series

[v2,7/8] rust: hrtimer: Add forward_now() to HrTimer and HrTimerCallbackContext

Message ID 20250415195020.413478-8-lyude@redhat.com (mailing list archive)
State New
Headers show
Series rust/hrtimer: Various hrtimer + time additions | expand

Commit Message

Lyude Paul April 15, 2025, 7:48 p.m. UTC
Using the HrTimerClockBase::time() function, we can now add an equivalent
to hrtimer_forward_now() to both HrTimer and HrTimerCallbackContext.

Signed-off-by: Lyude Paul <lyude@redhat.com>

---
V2:
* Change from Ktime to Delta
* Make sure that forward_now() takes a mutable reference to the timer
  struct
* Reword this to point out that we're adding forward_now() to both callback
  context and mutable timer reference
* Rename interval to duration

Signed-off-by: Lyude Paul <lyude@redhat.com>
---
 rust/kernel/time/hrtimer.rs | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff mbox series

Patch

diff --git a/rust/kernel/time/hrtimer.rs b/rust/kernel/time/hrtimer.rs
index 4da1e72e016d1..c84dcdacb4882 100644
--- a/rust/kernel/time/hrtimer.rs
+++ b/rust/kernel/time/hrtimer.rs
@@ -217,6 +217,14 @@  pub fn forward(&mut self, now: Instant, duration: Delta) -> u64 {
         //   timer callback context - fulfilling the requirements of the C API.
         unsafe { Self::raw_forward(self, now, duration) }
     }
+
+    /// Forward the time expiry so it expires at `duration` after the current time.
+    ///
+    /// This is a variant of [`forward`](Self::forward) that uses a duration after the current time
+    /// of the [`HrTimerClockBase`] for this [`HrTimerCallbackContext`].
+    pub fn forward_now(&mut self, duration: Delta) -> u64 {
+        self.forward(self.clock_base().time(), duration)
+    }
 }
 
 /// The timer base for a specific clock.
@@ -612,6 +620,14 @@  pub fn forward(&mut self, now: Instant, duration: Delta) -> u64 {
         // - By our type invariants, `self.0` always points to a valid `HrTimer<T>`
         unsafe { HrTimer::<T>::raw_forward(self.0.as_ptr(), now, duration) }
     }
+
+    /// Forward the time expiry so it expires after now.
+    ///
+    /// This is a variant of [`HrTimerCallbackContext::forward()`] that uses an interval after the
+    /// current time of the [`HrTimerClockBase`] for this [`HrTimerCallbackContext`].
+    pub fn forward_now(&mut self, duration: Delta) -> u64 {
+        self.forward(self.clock_base().time(), duration)
+    }
 }
 
 /// Use to implement the [`HasHrTimer<T>`] trait.