sparkles_core/timestamp/
mod.rs1#[cfg(any(target_arch="x86", target_arch="x86_64"))]
11pub mod x86;
12#[cfg(any(target_arch="x86", target_arch="x86_64"))]
13pub use x86::X86Timestamp as Timestamp;
14
15#[cfg(target_arch="aarch64")]
16pub mod aarch64;
17#[cfg(target_arch="aarch64")]
18pub use aarch64::AArch64Timestamp as Timestamp;
19
20#[cfg(all(not(target_os="none"), not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64"))))]
21pub mod std;
22#[cfg(all(not(target_os="none"), not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64"))))]
23pub use std::StdTimestamp as Timestamp;
24
25#[cfg(feature="cortex-m")]
26pub mod cortex_m;
27
28#[cfg(feature="cortex-m")]
29pub use cortex_m::CortexMTimestamp as Timestamp;
30
31#[cfg(not(any(target_arch="x86", target_arch="x86_64", target_arch="aarch64", feature="cortex-m", not(target_os="none"))))]
32compile_error!("Unsupported platform! Either std or cortex-m are currently supported");
33
34pub trait TimestampProvider {
38 type TimestampType: Copy + Sized + From<u64>;
40
41 fn now() -> Self::TimestampType;
43
44 const TIMESTAMP_VALID_BITS: u8 = (size_of::<Self::TimestampType>() as u8) << 3;
46 const MAX_VALUE: u64 = ((1u128 << Self::TIMESTAMP_VALID_BITS) - 1) as u64;
48}