clock_getres

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
CLOCK_GETRES(3)		  Linux Programmer’s Manual	      CLOCK_GETRES(3)



NAME
       clock_getres, clock_gettime, clock_settime - clock and time functions

SYNOPSIS
       #include <time.h>

       int clock_getres(clockid_t clk_id, struct timespec *res);
       int clock_gettime(clockid_t clk_id, struct timespec *tp);
       int clock_settime(clockid_t clk_id, const struct timespec *tp);

DESCRIPTION
       The  function  clock_getres()  finds the resolution (precision) of the
       specified clock clk_id, and, if res is  non-NULL,  stores  it  in  the
       struct  timespec	 pointed to by res.  The resolution of clocks depends
       on the implementation and cannot be configured by  a  particular	 pro-
       cess.   If  the time value pointed to by the argument tp of clock_set-
       time() is not a multiple of res, then it is truncated to a multiple of
       res.

       The functions clock_gettime() and clock_settime() retrieve and set the
       time of the specified clock clk_id.

       The res and tp  arguments  are  timespec	 structs,  as  specified   in
       <time.h>:

       struct timespec {
	       time_t	tv_sec;	       /* seconds */
	       long	tv_nsec;       /* nanoseconds */
       };

       The clk_id argument is the identifier of the particular clock on which
       to act.	A clock may be system-wide and hence  visible  for  all	 pro-
       cesses,	or  per-process if it measures time only within a single pro-
       cess.

       All implementations support the system-wide realtime clock,  which  is
       identified   by	CLOCK_REALTIME.	  Its  time  represents	 seconds  and
       nanoseconds since the Epoch.  When its time is changed, timers  for  a
       relative	 interval are unaffected, but timers for an absolute point in
       time are affected.

       More clocks may be implemented. The interpretation of the  correspond-
       ing time values and the effect on timers is unspecified.

       Sufficiently  recent versions of GNU libc and the Linux kernel support
       the following clocks:

       CLOCK_REALTIME
	      System-wide realtime clock.  Setting this clock requires appro-
	      priate privileges.

       CLOCK_MONOTONIC
	      Clock  that  cannot  be set and represents monotonic time since
	      some unspecified starting point.

       CLOCK_PROCESS_CPUTIME_ID
	      High-resolution per-process timer from the CPU.

       CLOCK_THREAD_CPUTIME_ID
	      Thread-specific CPU-time clock.

RETURN VALUE
       clock_gettime(), clock_settime() and clock_getres() return 0 for	 suc-
       cess, or -1 for failure (in which case errno is set appropriately).

ERRORS
       EPERM  clock_settime() does not have permission to set the clock indi-
	      cated.

       EINVAL The clk_id specified is not supported on this system.

       EFAULT tp points outside the accessible address space.

NOTE
       Most systems require the program be linked with the librt  library  to
       use these functions.

AVAILABILITY
       On  POSIX  systems  on which these functions are available, the symbol
       _POSIX_TIMERS is defined in <unistd.h> to a value greater than 0.  The
       symbols	_POSIX_MONOTONIC_CLOCK, _POSIX_CPUTIME, _POSIX_THREAD_CPUTIME
       indicate	    that      CLOCK_MONOTONIC,	    CLOCK_PROCESS_CPUTIME_ID,
       CLOCK_THREAD_CPUTIME_ID are available.  (See also .BR sysconf (3).)

CONFORMING TO
       SUSv2, POSIX 1003.1-2001.

SEE ALSO
       date(1),	  adjtimex(2),	 gettimeofday(2),  settimeofday(2),  time(2),
       ctime(3), ftime(3), sysconf(3)



				  2003-08-24		      CLOCK_GETRES(3)