CLOCK_GETTIME(2) BSD Programmer's Manual CLOCK_GETTIME(2)
clock_gettime, clock_settime, clock_getres - get/set/calibrate date and time
#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);
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.
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.
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.
date(1), adjtime(2), ctime(3), timed(8)
The clock_gettime(), clock_settime(), and clock_setres() functions con- form to IEEE Std 1003.1b-1993 ("POSIX.1b"). MirBSD #10-current May 8, 1997 1