This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin with clock_gettime and CLOCK_MONOTONIC - gives always 0

Tobias Burnus:
b) Newlib is broken. For clock_gettime, CLOCK_MONOTONIC is not implemented. But both CLOCK_MONOTONIC and even _POSIX_MONOTONIC_CLOCK (with value 200112L) are defined. However, POSIX states: "If the Monotonic Clock option is supported, all implementations shall support a clock_id of CLOCK_MONOTONIC defined in <time.h>."

Sorry, I read this backward. CLOCK_MONOTONIC has to be in time.h according to POSIX [1]. However, whether the monotonic-clock option is supported, is given by _POSIX_MONOTONIC_CLOCK of unistd.h. POSIX states [2]:

- "If a symbolic constant is defined with the value -1, the option is not supported." - "If a symbolic constant is defined with the value zero, all headers, data types, and functions shall be present. The application can check at runtime to see whether the option is supported." - "If a symbolic constant is defined with a value greater than zero, the option shall always be supported when the application is executed."

Just looking at newlib, the value should be "-1"; but a value of "0" is probably fine as well. For Cygwin it could also be > 0.


As Corinna has written as follow up, the latter is actually the case: Only RTEMS and Cygwin define it (with value > 0).

Regarding the zero value, the patch she mentions is: " (hires_ns::nsecs): Take bool parameter. If set to true, don't use prime value (== return system wide absolute value).",

Thanks for the patch!

For libgfortran, as action item one should at least check whether _POSIX_MONOTONIC_CLOCK is defined as >= 0 before assuming that monotonic clocks work. (With 0 (as with glibc/Linux) or with when not defined, it might be still available but according to POSIX that's only checkable via |sysconf(_SC_MONOTONIC_CLOCK|) at runtime.)



Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]