mirror of
https://github.com/torvalds/linux.git
synced 2025-11-03 01:59:51 +02:00
rust: time: Seal the HrTimerMode trait
Prevent downstream crates or drivers from implementing `HrTimerMode` for arbitrary types, which could otherwise leads to unsupported behavior. Introduce a `private::Sealed` trait and implement it for all types that implement `HrTimerMode`. Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com> Reviewed-by: Boqun Feng <boqun.feng@gmail.com> Link: https://lore.kernel.org/r/20250617232806.3950141-1-fujita.tomonori@gmail.com Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
This commit is contained in:
parent
69f66cf458
commit
fc38b7ff87
1 changed files with 20 additions and 1 deletions
|
|
@ -444,8 +444,27 @@ fn as_nanos(&self) -> i64 {
|
|||
}
|
||||
}
|
||||
|
||||
mod private {
|
||||
use crate::time::ClockSource;
|
||||
|
||||
pub trait Sealed {}
|
||||
|
||||
impl<C: ClockSource> Sealed for super::AbsoluteMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativeMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::AbsolutePinnedMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativePinnedMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::AbsoluteSoftMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativeSoftMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::AbsolutePinnedSoftMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativePinnedSoftMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::AbsoluteHardMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativeHardMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::AbsolutePinnedHardMode<C> {}
|
||||
impl<C: ClockSource> Sealed for super::RelativePinnedHardMode<C> {}
|
||||
}
|
||||
|
||||
/// Operational mode of [`HrTimer`].
|
||||
pub trait HrTimerMode {
|
||||
pub trait HrTimerMode: private::Sealed {
|
||||
/// The C representation of hrtimer mode.
|
||||
const C_MODE: bindings::hrtimer_mode;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue