Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CLOCK_GETTIME(2)	      System Calls Manual	      CLOCK_GETTIME(2)

NAME
       clock_gettime,  clock_settime,  clock_getres  --	get/set/calibrate date
       and time

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #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);

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	   a   value   obtained	  from
       clock_getcpuclockid(3) or pthread_getcpuclockid(3) as well as the  fol-
       lowing values:

       CLOCK_REALTIME
       CLOCK_REALTIME_PRECISE
       CLOCK_REALTIME_FAST
	       Increments as a wall clock should.
       CLOCK_MONOTONIC
       CLOCK_MONOTONIC_PRECISE
       CLOCK_MONOTONIC_FAST
	       Increments in SI	seconds.
       CLOCK_UPTIME
       CLOCK_UPTIME_PRECISE
       CLOCK_UPTIME_FAST
	       Starts  at  zero	when the kernel	boots and increments monotoni-
	       cally in	SI seconds while the machine is	running.
       CLOCK_VIRTUAL
	       Increments only when the	CPU is running in user mode on	behalf
	       of the calling process.
       CLOCK_PROF
	       Increments when the CPU is running in user or kernel mode.
       CLOCK_SECOND
	       Returns	the  current  second  without  performing  a full time
	       counter query, using an in-kernel cached	value of  the  current
	       second.
       CLOCK_PROCESS_CPUTIME_ID
	       Returns the execution time of the calling process.
       CLOCK_THREAD_CPUTIME_ID
	       Returns the execution time of the calling thread.

       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 */
       };

       Only the	super-user may set the time of day, using only CLOCK_REALTIME.
       If the system securelevel is greater than 1 (see	init(8)), the time may
       only  be	 advanced.   This limitation is	imposed	to prevent a malicious
       super-user from setting arbitrary time stamps  on  files.   The	system
       time  can  still	be adjusted backwards using the	adjtime(2) system call
       even when the system is secure.

       The  resolution	(granularity)  of  a  clock   is   returned   by   the
       clock_getres() system call.  This value is placed in a (non-NULL) *tp.

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	 or  timespec argument was not a valid
			  value.

       [EPERM]		  A user other than the	super-user  attempted  to  set
			  the time.

SEE ALSO
       date(1),	      adjtime(2),	clock_getcpuclockid(3),	     ctime(3),
       pthread_getcpuclockid(3), timed(8)

STANDARDS
       The clock_gettime(), clock_settime(), and clock_getres()	 system	 calls
       conform	 to   IEEE   Std  1003.1b-1993	("POSIX.1").   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.

HISTORY
       The  clock_gettime(),  clock_settime(), and clock_getres() system calls
       first appeared in FreeBSD 3.0.

FreeBSD	13.0		       December	7, 2019		      CLOCK_GETTIME(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=clock_gettime&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help