diff options
Diffstat (limited to 'rust/kernel/time/hrtimer')
| -rw-r--r-- | rust/kernel/time/hrtimer/arc.rs | 8 | ||||
| -rw-r--r-- | rust/kernel/time/hrtimer/pin.rs | 10 | ||||
| -rw-r--r-- | rust/kernel/time/hrtimer/pin_mut.rs | 10 | ||||
| -rw-r--r-- | rust/kernel/time/hrtimer/tbox.rs | 8 | 
4 files changed, 26 insertions, 10 deletions
| diff --git a/rust/kernel/time/hrtimer/arc.rs b/rust/kernel/time/hrtimer/arc.rs index ccf1e66e5b2d..ed490a7a8950 100644 --- a/rust/kernel/time/hrtimer/arc.rs +++ b/rust/kernel/time/hrtimer/arc.rs @@ -4,8 +4,8 @@ use super::HasHrTimer;  use super::HrTimer;  use super::HrTimerCallback;  use super::HrTimerHandle; +use super::HrTimerMode;  use super::HrTimerPointer; -use super::Ktime;  use super::RawHrTimerCallback;  use crate::sync::Arc;  use crate::sync::ArcBorrow; @@ -54,9 +54,13 @@ where      T: HasHrTimer<T>,      T: for<'a> HrTimerCallback<Pointer<'a> = Self>,  { +    type TimerMode = <T as HasHrTimer<T>>::TimerMode;      type TimerHandle = ArcHrTimerHandle<T>; -    fn start(self, expires: Ktime) -> ArcHrTimerHandle<T> { +    fn start( +        self, +        expires: <<T as HasHrTimer<T>>::TimerMode as HrTimerMode>::Expires, +    ) -> ArcHrTimerHandle<T> {          // SAFETY:          //  - We keep `self` alive by wrapping it in a handle below.          //  - Since we generate the pointer passed to `start` from a valid diff --git a/rust/kernel/time/hrtimer/pin.rs b/rust/kernel/time/hrtimer/pin.rs index 293ca9cf058c..aef16d9ee2f0 100644 --- a/rust/kernel/time/hrtimer/pin.rs +++ b/rust/kernel/time/hrtimer/pin.rs @@ -4,7 +4,7 @@ use super::HasHrTimer;  use super::HrTimer;  use super::HrTimerCallback;  use super::HrTimerHandle; -use super::Ktime; +use super::HrTimerMode;  use super::RawHrTimerCallback;  use super::UnsafeHrTimerPointer;  use core::pin::Pin; @@ -54,9 +54,13 @@ where      T: HasHrTimer<T>,      T: HrTimerCallback<Pointer<'a> = Self>,  { +    type TimerMode = <T as HasHrTimer<T>>::TimerMode;      type TimerHandle = PinHrTimerHandle<'a, T>; -    unsafe fn start(self, expires: Ktime) -> Self::TimerHandle { +    unsafe fn start( +        self, +        expires: <<T as HasHrTimer<T>>::TimerMode as HrTimerMode>::Expires, +    ) -> Self::TimerHandle {          // Cast to pointer          let self_ptr: *const T = self.get_ref(); @@ -79,7 +83,7 @@ where      unsafe extern "C" fn run(ptr: *mut bindings::hrtimer) -> bindings::hrtimer_restart {          // `HrTimer` is `repr(C)` -        let timer_ptr = ptr as *mut HrTimer<T>; +        let timer_ptr = ptr.cast::<HrTimer<T>>();          // SAFETY: By the safety requirement of this function, `timer_ptr`          // points to a `HrTimer<T>` contained in an `T`. diff --git a/rust/kernel/time/hrtimer/pin_mut.rs b/rust/kernel/time/hrtimer/pin_mut.rs index 6033572d35ad..767d0a4e8a2c 100644 --- a/rust/kernel/time/hrtimer/pin_mut.rs +++ b/rust/kernel/time/hrtimer/pin_mut.rs @@ -1,7 +1,7 @@  // SPDX-License-Identifier: GPL-2.0  use super::{ -    HasHrTimer, HrTimer, HrTimerCallback, HrTimerHandle, Ktime, RawHrTimerCallback, +    HasHrTimer, HrTimer, HrTimerCallback, HrTimerHandle, HrTimerMode, RawHrTimerCallback,      UnsafeHrTimerPointer,  };  use core::{marker::PhantomData, pin::Pin, ptr::NonNull}; @@ -52,9 +52,13 @@ where      T: HasHrTimer<T>,      T: HrTimerCallback<Pointer<'a> = Self>,  { +    type TimerMode = <T as HasHrTimer<T>>::TimerMode;      type TimerHandle = PinMutHrTimerHandle<'a, T>; -    unsafe fn start(mut self, expires: Ktime) -> Self::TimerHandle { +    unsafe fn start( +        mut self, +        expires: <<T as HasHrTimer<T>>::TimerMode as HrTimerMode>::Expires, +    ) -> Self::TimerHandle {          // SAFETY:          // - We promise not to move out of `self`. We only pass `self`          //   back to the caller as a `Pin<&mut self>`. @@ -83,7 +87,7 @@ where      unsafe extern "C" fn run(ptr: *mut bindings::hrtimer) -> bindings::hrtimer_restart {          // `HrTimer` is `repr(C)` -        let timer_ptr = ptr as *mut HrTimer<T>; +        let timer_ptr = ptr.cast::<HrTimer<T>>();          // SAFETY: By the safety requirement of this function, `timer_ptr`          // points to a `HrTimer<T>` contained in an `T`. diff --git a/rust/kernel/time/hrtimer/tbox.rs b/rust/kernel/time/hrtimer/tbox.rs index 29526a5da203..ec08303315f2 100644 --- a/rust/kernel/time/hrtimer/tbox.rs +++ b/rust/kernel/time/hrtimer/tbox.rs @@ -4,8 +4,8 @@ use super::HasHrTimer;  use super::HrTimer;  use super::HrTimerCallback;  use super::HrTimerHandle; +use super::HrTimerMode;  use super::HrTimerPointer; -use super::Ktime;  use super::RawHrTimerCallback;  use crate::prelude::*;  use core::ptr::NonNull; @@ -64,9 +64,13 @@ where      T: for<'a> HrTimerCallback<Pointer<'a> = Pin<Box<T, A>>>,      A: crate::alloc::Allocator,  { +    type TimerMode = <T as HasHrTimer<T>>::TimerMode;      type TimerHandle = BoxHrTimerHandle<T, A>; -    fn start(self, expires: Ktime) -> Self::TimerHandle { +    fn start( +        self, +        expires: <<T as HasHrTimer<T>>::TimerMode as HrTimerMode>::Expires, +    ) -> Self::TimerHandle {          // SAFETY:          //  - We will not move out of this box during timer callback (we pass an          //    immutable reference to the callback). | 
