#include /* There is no other implemented value than TIME_UTC; all other values * are considered erroneous. */ int timespec_get(struct timespec * ts, int base) { clockid_t clockid = -1; switch (base) { default: return 0; case TIME_UTC: clockid = CLOCK_REALTIME; break; case TIME_MONOTONIC: clockid = CLOCK_MONOTONIC; break; case TIME_ACTIVE: clockid = CLOCK_PROCESS_CPUTIME_ID; break; case TIME_THREAD_ACTIVE: clockid = CLOCK_THREAD_CPUTIME_ID; break; case TIME_MONOTONIC_RAW: clockid = CLOCK_MONOTONIC_RAW; break; case TIME_UTC_COARSE: clockid = CLOCK_REALTIME_COARSE; break; case TIME_MONOTONIC_COARSE: clockid = CLOCK_MONOTONIC_COARSE; break; case TIME_BOOTTIME: clockid = CLOCK_BOOTTIME; break; case TIME_UTC_ALARM: clockid = CLOCK_REALTIME_ALARM; break; case TIME_BOOTTIME_ALARM: clockid = CLOCK_BOOTTIME_ALARM; break; case TIME_SGI_CYCLE: clockid = CLOCK_SGI_CYCLE; break; case TIME_TAI: clockid = CLOCK_TAI; break; } int ret = __clock_gettime(clockid, ts); return ret < 0 ? 0 : base; }