[PATCH v2] time: Add TIME_MONOTONIC, TIME_ACTIVE, and TIME_THREAD_ACTIVE

Florian Weimer fweimer@redhat.com
Tue Nov 25 13:43:42 GMT 2025


* Adhemerval Zanella Netto:

> On 25/11/25 05:35, Florian Weimer wrote:
>> * Adhemerval Zanella:
>> 
>>> The TIME_MONOTONIC maps to POSIX's CLOCK_MONOTONIC, TIME_ACTIVE to
>>> CLOCK_PROCESS_CPUTIME_ID, and TIME_THREAD_ACTIVE to
>>> CLOCK_THREAD_CPUTIME_ID.
>>>
>>> No Linux specific timer are added as extension.
>> 
>> I think we should come up with some general transformation of the clock
>> ID values.  It would help us if WG14 lifted the requirement that clock
>> IDs must be positive integers.  The interfaces they defined merely
>> require that valid clock IDs are not zeros.  Once negative values are
>> permitted, we only have to special-case the zero value.  New clocks then
>> are just a matter of kernel support and defining the appropriate
>> constants in a header file.
>
> At least for Linux/POSIX we can currently assume a direct mapping between
> C timebase and POSIX clockid.  What I am not sure is if we should add
> GNU extensions to transform between clocks, like the timebase_to_clockid
> and clockid_to_timebase proposed early for this feature.

The issue is that CLOCK_REALTIME is zero, WG14 decided to ban this
value, and baked this decision firmly into the interface.  So we cannot
have an identical mapping or even a 1:1 mapping.  We can find a Linux
clock 𝕮 that is unlikely to be a WG14 clock, ever (like a device clock
for standard input), and then do this:

  CLOCK_REALTIME → 1
  𝕮 → 0
  rest gets mapped as conveniently as possible.

The last line gets easier if we can use the full int range, excluding
zero.

Thanks,
Florian



More information about the Libc-alpha mailing list