.\" NOTES: describe case where clock_nanosleep() can be preferable.
.\" NOTES: describe CLOCK_REALTIME versus CLOCK_NANOSLEEP
.\" Replace crufty discussion of HZ with a pointer to time(7).
-.TH NANOSLEEP 2 2017-03-13 "Linux" "Linux Programmer's Manual"
+.TH NANOSLEEP 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
nanosleep \- high-resolution sleep
.SH SYNOPSIS
has elapsed, or the delivery of a signal
that triggers the invocation of a handler in the calling thread or
that terminates the process.
-
+.PP
If the call is interrupted by a signal handler,
.BR nanosleep ()
returns \-1, sets
can then be used to call
.BR nanosleep ()
again and complete the specified pause (but see NOTES).
-
+.PP
The structure
.I timespec
is used to specify intervals of time with nanosecond precision.
It is defined as follows:
-.sp
+.PP
.in +4n
-.nf
+.EX
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
-.fi
+.EE
.in
.PP
The value of the nanoseconds field must be in the range 0 to 999999999.
-
+.PP
Compared to
.BR sleep (3)
and
then the interval will be rounded up to the next multiple.
Furthermore, after the sleep completes, there may still be a delay before
the CPU becomes free to once again execute the calling thread.
-
+.PP
The fact that
.BR nanosleep ()
sleeps for a relative interval can be problematic if the call
This problem can be avoided by using
.BR clock_nanosleep (2)
with an absolute time value.
-
+.PP
POSIX.1 specifies that
.BR nanosleep ()
should measure time against the
with the
.BR TIMER_ABSTIME
flag to sleep to an absolute deadline.
-
+.PP
In Linux 2.4, if
.BR nanosleep ()
is stopped by a signal (e.g.,