Skip to main content

PhcClock

Struct PhcClock 

Source
pub struct PhcClock { /* private fields */ }
Expand description

PTP Hardware Clock (PHC) accessed via /dev/ptpN.

This provides direct access to the NIC’s hardware clock through the Linux PTP subsystem. The PHC can be read with nanosecond precision and disciplined independently of the system clock.

The internal Mutex ensures that read-modify-write operations like step() are atomic with respect to concurrent callers.

Implementations§

Source§

impl PhcClock

Source

pub fn open(device: &str) -> Result<Self, ClockError>

Open a PTP hardware clock device.

device should be a path like /dev/ptp0. The device must exist and be readable by the current process.

Source

pub fn read_time(&self) -> Result<PtpTimestamp, ClockError>

Read the PHC time as a PtpTimestamp.

Uses clock_gettime with the dynamic clockid derived from the PHC file descriptor.

Source

pub fn device_path(&self) -> &str

Get the device path this clock was opened from.

Source

pub fn as_raw_fd(&self) -> c_int

Get the raw file descriptor (for advanced ioctl operations).

Source

pub fn clockid(&self) -> clockid_t

Get the dynamic clockid for this PHC.

Trait Implementations§

Source§

impl Clock for PhcClock

Source§

fn now(&self) -> Result<NtpTimestamp, ClockError>

Read current time from this clock.
Source§

fn step(&self, offset: NtpDuration) -> Result<(), ClockError>

Apply a step adjustment (instant offset). Requires privilege.
Source§

fn adjust_frequency(&self, ppm: f64) -> Result<(), ClockError>

Apply a slew adjustment (frequency change in PPM). Requires privilege.
Source§

fn frequency_offset(&self) -> Result<f64, ClockError>

Read current frequency offset in PPM.
Source§

fn resolution(&self) -> NtpDuration

Get clock resolution as a duration.
Source§

fn max_frequency_adjustment(&self) -> f64

Maximum allowed frequency adjustment in PPM.
Source§

fn is_adjustable(&self) -> bool

Whether this clock supports discipline (has CAP_SYS_TIME or equivalent).
Source§

impl Debug for PhcClock

Source§

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

Formats the value using the given formatter. Read more

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. 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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more