Provided by: libdrawtk-dev_2.0-2ubuntu1_amd64 bug

NAME

       dtk_nanosleep - high-resolution sleep

SYNOPSIS

       #include <dtk_time.h>

       int dtk_nanosleep(int abs, const struct dtk_timespec* req,
                                  struct dtk_timespec* rem);

DESCRIPTION

       The function dtk_nanosleep() allows the caller to sleep for an interval with nanosecond precision. If the
       argument  abs is zero, the specified interval is interpretated as a relative value, otherwise an absolute
       value. The interval is specified by the req argument which is  a  pointer  to  a  dtk_timespec  structure
       defined as:

           struct dtk_timespec {
               long sec;    /* seconds */
               long nsec;   /* nanoseconds */
           };

       If  interpreted  as  an absolute value, it represents seconds and nanoseconds since the Epoch, 1970-01-01
       00:00:00 +0000  (UTC).

       dtk_nanosleep() suspends the execution of the calling thread until either at least the time specified  by
       req  has  elapsed,  or a signal is delivered that causes a signal handler to be called or that terminates
       the process.

       If the call is interrupted by a signal handler, dtk_nanosleep() returns -1, and sets errno to  EINTR.  In
       addition,  if  rem is not NULL, and abs is zero, it returns the remaining unslept time in rem. This value
       can then be used to call dtk_nanosleep() again and complete a (relative) sleep.

RETURN VALUE

       On successfully sleeping  for  the  requested  interval,  dtk_nanosleep()  returns  0.  If  the  call  is
       interrupted  by  a  signal  handler  or  encounters  an  error,  then  it  returns  -1  and  errno is set
       appropriately.

ERRORS

       dtk_nanosleep() will fail if:

       EINTR  The sleep was interrupted by a signal handler.

       EINVAL The value in the nsec field was not in the range 0 to 999999999 or sec was negative.

NOTE

       This function is a wrapper to  clock_nanosleep(2)  if  it  is  provided  by  the  system.  Otherwise,  it
       implements the function by using the sleep function with the highest precision available on the system.

SEE ALSO

       dtk_nanosleep(3), clock_nanosleep(2)

EPFL                                                  2011                                      DTK_NANOSLEEP(3)