[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