CLOCK_GETTIME(3) | Library Functions Manual | CLOCK_GETTIME(3) |
clock_gettime
,
clock_settime
, clock_getres
,
clock_gettime_nsec_np
—
get/set date and time
#include
<time.h>
int
clock_gettime
(clockid_t
clock_id, struct timespec
*tp);
int
clock_settime
(clockid_t
clock_id, const struct
timespec *tp);
int
clock_getres
(clockid_t
clock_id, struct timespec
*tp);
uint64_t
clock_gettime_nsec_np
(clockid_t
clock_id);
The
clock_gettime
()
and
clock_settime
()
functions allow the calling process to retrieve or set the value used by a
clock which is specified by clock_id.
clock_id can be a value from one of 8 predefined values:
CLOCK_REALTIME
CLOCK_MONOTONIC
CLOCK_MONOTONIC_RAW
CLOCK_MONOTONIC_RAW_APPROX
CLOCK_UPTIME_RAW
CLOCK_MONOTONIC_RAW,
but that does not increment
while the system is asleep. The returned value is identical to the result
of
mach_absolute_time
()
after the appropriate mach_timebase conversion is applied.CLOCK_UPTIME_RAW_APPROX
CLOCK_PROCESS_CPUTIME_ID
CLOCK_THREAD_CPUTIME_ID
The structure pointed to by tp is defined in
<sys/time.h>
as:
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */ };
Only the CLOCK_REALTIME
clock can be set,
and only the superuser may do so.
The resolution of a clock is returned by the
clock_getres
()
call. This value is placed in a (non-null) *tp. This
value may be smaller than the actual precision of the underlying clock, but
represents a lower bound on the resolution.
As a non-portable extension, the
clock_gettime_nsec_np
()
function will return the clock value in 64-bit nanoseconds.
A 0 return value indicates that the call succeeded. A -1 return
value indicates an error occurred, and in this case an error code is stored
into the global variable errno. For
clock_gettime_nsec_np
() a return value of non-0
indicates success. A 0 return value indicates an error occurred and an error
code is stored in errno.
clock_gettime
(),
clock_settime
(),
clock_getres
(), and
clock_gettime_nsec_np
() will fail if:
In addition, clock_settime
() may return
the following errors:
These functions first appeared in Mac OSX 10.12
The clock_gettime
(),
clock_settime
(), and
clock_getres
() system calls conform to
IEEE Std 1003.1b-1993 (“POSIX.1b”).
clock_gettime_nsec_np
() is a non-portable Darwin
extension. The clock IDs CLOCK_MONOTONIC_RAW and
CLOCK_UPTIME_RAW are extensions to the POSIX
interface.
January 26, 2016 | macOS 14.6 |