mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +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