I would appreciate any donations. Wishlist or send e-mail type donations to maekawa AT daemon-systems.org.

Thank you.


NANOSLEEP(2)                  System Calls Manual                 NANOSLEEP(2)

NAME
     nanosleep -- high resolution sleep

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <time.h>

     int
     clock_nanosleep(clockid_t clock_id, int flags,
         const struct timespec *rqtp, struct timespec *rmtp);

     int
     nanosleep(const struct timespec *rqtp, struct timespec *rmtp);

DESCRIPTION
     If the TIMER_ABSTIME flag is not set in the flags argument, then
     clock_nanosleep() suspends execution of the calling thread until either
     the number of seconds and nanoseconds specified in the rqtp argument have
     elapsed using the clock in the clock_id argument, or a signal is
     delivered to the calling process and its action is to invoke a signal
     catching function or to terminate the process.

     If the TIMER_ABSTIME flag is set in the flags argument, then
     clock_nanosleep() suspends execution of the calling thread until either
     the value of the clock specified in the clock_id argument reaches the
     value of the rqtp argument in seconds and nanoseconds, or a signal is
     delivered to the calling process and its action is to invoke a signal
     catching function or to terminate the process.

     The suspension time may be longer than requested due to the scheduling of
     other activity by the system.

     The nanosleep() function behaves like clock_nanosleep() with the clock_id
     argument equal to CLOCK_MONOTONIC and the flags argument having
     TIMER_ABSTIME not set.

     The struct timespec is described in timespec(3).  The clock_id specified
     is the time source.

RETURN VALUES
     If the clock_nanosleep() or the nanosleep() functions return because the
     requested time has elapsed, the value returned will be zero.

     If the clock_nanosleep() or the nanosleep() functions return due to the
     delivery of a signal, the value returned will be -1, and the global
     variable errno will be set to indicate the interruption.  If rmtp is
     non-NULL, the timespec structure it references is updated to contain the
     unslept amount (the request time minus the time actually slept).

ERRORS
     If any of the following conditions occur, the nanosleep function shall
     return -1 and set errno to the corresponding value.

     [EFAULT]           Either rqtp or rmtp points to memory that is not a
                        valid part of the process address space.

     [EINTR]            nanosleep was interrupted by the delivery of a signal.

     [EINVAL]           rqtp specified a nanosecond value less than zero or
                        greater than 1000 million.

     [ENOSYS]           nanosleep is not supported by this implementation.

     [ENOTSUP]          for clock_nanosleep(), the clock specified in the
                        clock_id argument is not supported.

SEE ALSO
     sleep(3), timespec(3)

STANDARDS
     The nanosleep() function conforms to IEEE Std 1003.1b-1993
     (``POSIX.1b'').  The clock_nanosleep() function conforms to IEEE Std
     1003.1j-2000 (``POSIX.1j'').

BUGS
     The NetBSD kernel is not tickless, so the maximum sleep resolution is
     determined by the value of HZ which is by default 100 in most
     architectures.  This means that a request to sleep for less than 10ms (1
     / HZ seconds), is rounded up to that.

NetBSD 7.1.2                   February 1, 2014                   NetBSD 7.1.2