2 stable releases
new 2.0.0 | May 7, 2025 |
---|---|
1.0.0 | Apr 9, 2024 |
#86 in Date and time
523 downloads per month
Used in 4 crates
75KB
985 lines
ClockBound Shared Memory
Overview
This crate implements the low-level IPC functionality to share ClockErrorBound data and clock status over a shared memory segment. It provides a reader and writer implementation to facilitate operating on the shared memory segment.
Clock status
Clock status are retrieved directly from chronyd
tracking data.
Unknown
: the status of the clock is unknown.Synchronized
: the clock is kept accurate by the synchronization daemon.FreeRunning
: the clock is free running and not updated by the synchronization daemon.Disrupted
: the clock has been disrupted and the accuracy of time cannot be bounded.
Finite State Machine (FSM)
FSM drives a change in the clock status word stored in the ClockBound shared memory segment. Each transition in the FSM is triggered by chrony
. See following state diagram for clock status in shared memory:
Errors returned by all low-level ClockBound APIs
SyscallError(Errno, &'static CStr)
: a system call failed.- variant includes the Errno struct with error details
- an indication on the origin of the system call that error'ed.
SegmentNotInitialized
: the shared memory segment is not initialized.SegmentMalformed
: the shared memory segment is initialized but malformed.CausalityBreach
: failed causality check when comparing timestamps.SegmentVersionNotSupported
: the shared memory segment version is not supported.
Dependencies
~1.8–8MB
~72K SLoC