CLOCK_GETTIME(2) BSD Programmer's Manual CLOCK_GETTIME(2)NAME
clock_gettime, clock_settime, clock_getres - get/set/calibrate date and
time
SYNOPSIS
#include <sys/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);
DESCRIPTION
The clock_gettime() and clock_settime() allow the calling process to re-
trieve or set the value used by a clock which is specified by clock_id.
clock_id can be one of four values: CLOCK_REALTIME for time that incre-
ments as a wall clock should, 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_MONOTONIC for time that increments at a steady rate
(monotonically).
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 superuser may set the time of day. If the system securelevel is
greater than 1 (see init(8)), the time may only be advanced. This limita-
tion is imposed to prevent a malicious superuser from setting arbitrary
time stamps on files. The system time can still be adjusted backwards us-
ing the adjtime(2) system call even when the system is secure.
The resolution (granularity) of a clock is returned by the clock_getres()
call. This value is placed in a (non-null) *tp.
RETURN VALUES
A 0 return value indicates that the call succeeded. A -1 return value in-
dicates an error occurred, and in this case an error code is stored into
the global variable errno.
ERRORS
The following error codes may be set in errno:
[EINVAL] The clock_id was not a valid value.
[EFAULT] The tp argument address referenced invalid memory.
[EPERM] A user other than the superuser attempted to set the time.
SEE ALSOdate(1), adjtime(2), ctime(3), timed(8)STANDARDS
The clock_gettime(), clock_settime(), and clock_setres() functions con-
form to IEEE Std 1003.1b-1993 ("POSIX").
MirOS BSD #10-current May 8, 1997 1