/* Void Main's man pages */

{ phpMan } else { main(); }

Command: man perldoc info search(apropos)  


CLOCK_GETRES(3P)                                    POSIX Programmer's Manual                                   CLOCK_GETRES(3P)



PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux implementation of this interface may differ (con-
       sult the corresponding Linux manual page for details of Linux behavior), or the  interface  may  not  be  implemented  on
       Linux.

NAME
       clock_getres, clock_gettime, clock_settime - clock and timer functions (REALTIME)

SYNOPSIS
       #include <time.h>

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


DESCRIPTION
       The  clock_getres()  function  shall return the resolution of any clock. Clock resolutions are implementation-defined and
       cannot be set by a process. If the argument res is not NULL, the resolution of the specified clock shall be stored in the
       location pointed to by res. If res is NULL, the clock resolution is not returned. If the time argument of clock_settime()
       is not a multiple of res, then the value is truncated to a multiple of res.

       The clock_gettime() function shall return the current value tp for the specified clock, clock_id.

       The clock_settime() function shall set the specified clock, clock_id, to the value specified by tp. Time values that  are
       between  two  consecutive non-negative integer multiples of the resolution of the specified clock shall be truncated down
       to the smaller multiple of the resolution.

       A clock may be system-wide (that is, visible to all processes) or per-process (measuring time  that  is  meaningful  only
       within a process). All implementations shall support a clock_id of CLOCK_REALTIME as defined in <time.h>. This clock rep-
       resents the realtime clock for the system. For this clock, the  values  returned  by  clock_gettime()  and  specified  by
       clock_settime()  represent  the  amount  of time (in seconds and nanoseconds) since the Epoch. An implementation may also
       support additional clocks. The interpretation of time values for these clocks is unspecified.

       If the value of the CLOCK_REALTIME clock is set via clock_settime(), the new value of the clock shall be used  to  deter-
       mine  the  time of expiration for absolute time services based upon the CLOCK_REALTIME clock. This applies to the time at
       which armed absolute timers expire. If the absolute time requested at the invocation of such a time service is before the
       new  value  of  the  clock, the time service shall expire immediately as if the clock had reached the requested time nor-
       mally.

       Setting the value of the CLOCK_REALTIME clock via clock_settime() shall have no effect on threads that are blocked  wait-
       ing for a relative time service based upon this clock, including the nanosleep() function; nor on the expiration of rela-
       tive timers based upon this clock.  Consequently, these time services shall expire when the requested  relative  interval
       elapses, independently of the new or old value of the clock.

       If  the  Monotonic  Clock option is supported, all implementations shall support a clock_id of CLOCK_MONOTONIC defined in
       <time.h>.  This clock represents the monotonic clock for the system. For this clock, the  value  returned  by  clock_get-
       time()  represents  the  amount of time (in seconds and nanoseconds) since an unspecified point in the past (for example,
       system start-up time, or the Epoch). This point does not change after system start-up time. The value of the  CLOCK_MONO-
       TONIC  clock  cannot  be  set via clock_settime().  This function shall fail if it is invoked with a clock_id argument of
       CLOCK_MONOTONIC.

       The effect of setting a clock via clock_settime() on  armed  per-process  timers  associated  with  a  clock  other  than
       CLOCK_REALTIME is implementation-defined.

       If  the  value of the CLOCK_REALTIME clock is set via clock_settime(), the new value of the clock shall be used to deter-
       mine the time at which the system shall awaken a thread blocked on an absolute  clock_nanosleep()  call  based  upon  the
       CLOCK_REALTIME clock.  If the absolute time requested at the invocation of such a time service is before the new value of
       the clock, the call shall return immediately as if the clock had reached the requested time normally.

       Setting the value of the CLOCK_REALTIME clock via clock_settime() shall have no effect on any thread that is blocked on a
       relative  clock_nanosleep() call. Consequently, the call shall return when the requested relative interval elapses, inde-
       pendently of the new or old value of the clock.

       The appropriate privilege to set a particular clock is implementation-defined.

       If _POSIX_CPUTIME is defined, implementations shall support clock ID values obtained by  invoking  clock_getcpuclockid(),
       which  represent  the  CPU-time clock of a given process.  Implementations shall also support the special clockid_t value
       CLOCK_PROCESS_CPUTIME_ID, which represents the CPU-time clock of the calling process when invoking one of  the  clock_*()
       or timer_*() functions. For these clock IDs, the values returned by clock_gettime() and specified by clock_settime() rep-
       resent the amount of execution time of the process associated with the clock. Changing the value of a CPU-time clock  via
       clock_settime() shall have no effect on the behavior of the sporadic server scheduling policy (see Scheduling Policies ).

       If  _POSIX_THREAD_CPUTIME  is defined, implementations shall support clock ID values obtained by invoking pthread_getcpu-
       clockid(), which represent the CPU-time clock of  a  given  thread.   Implementations  shall  also  support  the  special
       clockid_t  value  CLOCK_THREAD_CPUTIME_ID, which represents the CPU-time clock of the calling thread when invoking one of
       the clock_*() or timer_*() functions. For these clock IDs, the  values  returned  by  clock_gettime()  and  specified  by
       clock_settime()  shall represent the amount of execution time of the thread associated with the clock. Changing the value
       of a CPU-time clock via clock_settime() shall have no effect on the behavior of the  sporadic  server  scheduling  policy
       (see Scheduling Policies ).

RETURN VALUE
       A  return  value of 0 shall indicate that the call succeeded. A return value of -1 shall indicate that an error occurred,
       and errno shall be set to indicate the error.

ERRORS
       The clock_getres(), clock_gettime(), and clock_settime() functions shall fail if:

       EINVAL The clock_id argument does not specify a known clock.


       The clock_settime() function shall fail if:

       EINVAL The tp argument to clock_settime() is outside the range for the given clock ID.

       EINVAL The tp argument specified a nanosecond value less than zero or greater than or equal to 1000 million.

       EINVAL The value of the clock_id argument is CLOCK_MONOTONIC.


       The clock_settime() function may fail if:

       EPERM  The requesting process does not have the appropriate privilege to set the specified clock.


       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       These functions are part of the Timers option and need not be available on all implementations.

       Note that the absolute value of the monotonic clock is meaningless (because its origin is arbitrary), and thus  there  is
       no need to set it. Furthermore, realtime applications can rely on the fact that the value of this clock is never set and,
       therefore, that time intervals measured with this clock will not be affected by calls to clock_settime().

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       clock_getcpuclockid(), clock_nanosleep(), ctime(), mq_timedreceive(), mq_timedsend(),  nanosleep(),  pthread_mutex_timed-
       lock(), sem_timedwait(), time(), timer_create(), timer_getoverrun(), the Base Definitions volume of IEEE Std 1003.1-2001,
       <time.h>

COPYRIGHT
       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003  Edition,  Standard  for
       Information  Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copy-
       right (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any
       discrepancy  between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group
       Standard  is  the  referee   document.   The   original   Standard   can   be   obtained   online   at   http://www.open-
       group.org/unix/online.html .



IEEE/The Open Group                                           2003                                              CLOCK_GETRES(3P)

Valid XHTML 1.0!Valid CSS!