table of contents
other sections
CLOCK_GETTIME(2) | System Calls Manual | CLOCK_GETTIME(2) |
NAME¶
clock_gettime, clock_settime, clock_getres — get/set/calibrate date and timeLIBRARY¶
Standard C Library (libc, -lc)SYNOPSIS¶
#include <time.h> intclock_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);
DESCRIPTION¶
The clock_gettime() and clock_settime() system calls allow the calling process to retrieve or set the value used by a clock which is specified by clock_id. The clock_id argument can be one of the following values:CLOCK_REALTIME
,
CLOCK_REALTIME_PRECISE
,
CLOCK_REALTIME_FAST
for time that increments as a wall
clock should; CLOCK_MONOTONIC
,
CLOCK_MONOTONIC_PRECISE
,
CLOCK_MONOTONIC_FAST
which increments in SI seconds;
CLOCK_UPTIME
,
CLOCK_UPTIME_PRECISE
,
CLOCK_UPTIME_FAST
which starts at zero when the kernel
boots and increments monotonically in SI seconds while the machine is running;
CLOCK_VIRTUAL
for time that increments only when the
CPU is running in user mode on behalf of the calling process;
CLOCK_PROF
for time that increments when the CPU is
running in user or kernel mode; or CLOCK_SECOND
which
returns the current second without performing a full time counter query, using
in-kernel cached value of current second.
The clock IDs CLOCK_REALTIME_FAST,
CLOCK_MONOTONIC_FAST,
CLOCK_UPTIME_FAST are analogs of corresponding IDs
without _FAST suffix but do not perform a full time counter query, so their
accuracy is one timer tick. Similarly,
CLOCK_REALTIME_PRECISE,
CLOCK_MONOTONIC_PRECISE,
CLOCK_UPTIME_PRECISE are used to get the most exact
value as possible, at the expense of execution time.
The structure pointed to by tp is defined in
<sys/timespec.h> as:
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */ };
RETURN VALUES¶
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.ERRORS¶
The following error codes may be set in errno:- [
EINVAL
] - The clock_id argument was not a valid value.
- [
EFAULT
] - The *tp argument address referenced invalid memory.
- [
EPERM
] - A user other than the super-user attempted to set the time.
SEE ALSO¶
date(1), adjtime(2), ctime(3), timed(8)STANDARDS¶
The clock_gettime(), clock_settime(), and clock_getres() system calls conform to IEEE Std 1003.1b-1993 (“POSIX.1b”). The clock IDs CLOCK_REALTIME_FAST, CLOCK_REALTIME_PRECISE, CLOCK_MONOTONIC_FAST, CLOCK_MONOTONIC_PRECISE, CLOCK_UPTIME, CLOCK_UPTIME_FAST, CLOCK_UPTIME_PRECISE, CLOCK_SECOND are FreeBSD extensions to the POSIX interface.December 29, 2009 | Debian |