An ontology of clocks

Kurt Roeckx kurt at
Fri Feb 19 23:57:28 UTC 2016

On Fri, Feb 19, 2016 at 05:56:04PM -0500, Daniel Franke wrote:
> At a high level, a clock is characterized by the answers to three questions:

I guess that should be four ...

> # II - What drives it?
> A typical PC has several oscillators. In addition to the main one,
> which sends clock interrupts to the CPU, there's likely to be a
> separate one on each NIC (important for PTP), one driving the RTC (aka
> BIOS clock), and perhaps an external oscillator providing a PPS
> signal.

You're missing at least a few ones here that are available on
typical PC hardware, including the pit, hpet, tsc, ACPI timer.

> * CLOCK_MONOTONIC_RAW is an atomic clock with an unspecified epoch and
> a precision of one nanosecond. It is driven by the system oscillator.
> It supports no adjustments at all. It is corrupted by suspending or
> rebooting the machine.

I'm sure what you mean by corrupt in the case of suspending.  It's
still measuring something, but maybe not something you (or ntp)
cares about.  I guess this falls under your category of "clocks
that count time selectively".

Also, the 1 nanosecond might not be the resolution.  It's going to
depend on the system.  You need to call clock_getres() to find out
what the real resolution is.  But 1 nanosecond is the best you can

> * /dev/rtc0 is a clumsy clock with a specified epoch and a precision
> of one second. It is driven by the RTC oscillator. It supports
> stepping. It is corrupted only by the death of the CMOS battery.

It actually supports various frequencies.

There is also at least /dev/hpet that you might want to look at.


More information about the devel mailing list