Enum ClockId

Source
#[repr(u32)]
pub enum ClockId { RealTime = 0, Monotonic = 1, BootTime = 7, TAI = 11, }
Expand description

An identifier for a clock. Used when specifying clock sources.

Selection of the clock depends on the use case. In some cases the usage of a particular clock is mandatory, e.g. in network protocols, filesystems.In other cases the user of the clock has to decide which clock is best suited for the purpose. In most scenarios clock ClockId::Monotonic is the best choice as it provides a accurate monotonic notion of time (leap second smearing ignored).

Variants§

§

RealTime = 0

A settable system-wide clock that measures real (i.e., wall-clock) time.

Setting this clock requires appropriate privileges. This clock is affected by discontinuous jumps in the system time (e.g., if the system administrator manually changes the clock), and by frequency adjustments performed by NTP and similar applications via adjtime(3), adjtimex(2), clock_adjtime(2), and ntp_adjtime(3). This clock normally counts the number of seconds since 1970-01-01 00:00:00 Coordinated Universal Time (UTC) except that it ignores leap seconds; near a leap second it may be adjusted by leap second smearing to stay roughly in sync with UTC. Leap second smearing applies frequency adjustments to the clock to speed up or slow down the clock to account for the leap second without discontinuities in the clock. If leap second smearing is not applied, the clock will experience discontinuity around leap second adjustment.

§

Monotonic = 1

A monotonically increasing clock.

A nonsettable system-wide clock that represents monotonic time since—as described by POSIX—“some unspecified point in the past”. On Linux, that point corresponds to the number of seconds that the system has been running since it was booted.

The CLOCK_MONOTONIC clock is not affected by discontinuous jumps in the CLOCK_REAL (e.g., if the system administrator manually changes the clock), but is affected by frequency adjustments. This clock does not count time that the system is suspended.

§

BootTime = 7

A monotonic that ticks while system is suspended.

A nonsettable system-wide clock that is identical to CLOCK_MONOTONIC, except that it also includes any time that the system is suspended. This allows applications to get a suspend-aware monotonic clock without having to deal with the complications of CLOCK_REALTIME, which may have discontinuities if the time is changed using settimeofday(2) or similar.

§

TAI = 11

International Atomic Time.

A system-wide clock derived from wall-clock time but counting leap seconds.

This clock is coupled to CLOCK_REALTIME and will be set when CLOCK_REALTIME is set, or when the offset to CLOCK_REALTIME is changed via adjtimex(2). This usually happens during boot and should not happen during normal operations. However, if NTP or another application adjusts CLOCK_REALTIME by leap second smearing, this clock will not be precise during leap second smearing.

The acronym TAI refers to International Atomic Time.

Trait Implementations§

Source§

impl Clone for ClockId

Source§

fn clone(&self) -> ClockId

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ClockId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ClockId

Source§

fn eq(&self, other: &ClockId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ClockId

Source§

impl Eq for ClockId

Source§

impl StructuralPartialEq for ClockId

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.