summaryrefslogtreecommitdiffstats
path: root/man2/nanosleep.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/nanosleep.2')
-rw-r--r--man2/nanosleep.2221
1 files changed, 0 insertions, 221 deletions
diff --git a/man2/nanosleep.2 b/man2/nanosleep.2
deleted file mode 100644
index 61242ea..0000000
--- a/man2/nanosleep.2
+++ /dev/null
@@ -1,221 +0,0 @@
-.\" Copyright (C) Markus Kuhn, 1996
-.\" and Copyright (C) Linux Foundation, 2008, written by Michael Kerrisk
-.\" <mtk.manpages@gmail.com>
-.\"
-.\" SPDX-License-Identifier: GPL-2.0-or-later
-.\"
-.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
-.\" First version written
-.\" Modified, 2004-10-24, aeb
-.\" 2008-06-24, mtk
-.\" Minor rewrites of some parts.
-.\" 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 2024-03-03 "Linux man-pages 6.7"
-.SH NAME
-nanosleep \- high-resolution sleep
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.B #include <time.h>
-.P
-.BI "int nanosleep(const struct timespec *" duration ,
-.BI " struct timespec *_Nullable " rem );
-.fi
-.P
-.RS -4
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.RE
-.P
-.BR nanosleep ():
-.nf
- _POSIX_C_SOURCE >= 199309L
-.fi
-.SH DESCRIPTION
-.BR nanosleep ()
-suspends the execution of the calling thread
-until either at least the time specified in
-.I *duration
-has elapsed, or the delivery of a signal
-that triggers the invocation of a handler in the calling thread or
-that terminates the process.
-.P
-If the call is interrupted by a signal handler,
-.BR nanosleep ()
-returns \-1, sets
-.I errno
-to
-.BR EINTR ,
-and writes the remaining time into the structure pointed to by
-.I rem
-unless
-.I rem
-is NULL.
-The value of
-.I *rem
-can then be used to call
-.BR nanosleep ()
-again and complete the specified pause (but see NOTES).
-.P
-The
-.BR timespec (3)
-structure
-is used to specify intervals of time with nanosecond precision.
-.P
-The value of the nanoseconds field must be in the range [0, 999999999].
-.P
-Compared to
-.BR sleep (3)
-and
-.BR usleep (3),
-.BR nanosleep ()
-has the following advantages:
-it provides a higher resolution for specifying the sleep interval;
-POSIX.1 explicitly specifies that it
-does not interact with signals;
-and it makes the task of resuming a sleep that has been
-interrupted by a signal handler easier.
-.SH RETURN VALUE
-On successfully sleeping for the requested duration,
-.BR nanosleep ()
-returns 0.
-If the call is interrupted by a signal handler or encounters an error,
-then it returns \-1, with
-.I errno
-set to indicate the error.
-.SH ERRORS
-.TP
-.B EFAULT
-Problem with copying information from user space.
-.TP
-.B EINTR
-The pause has been interrupted by a signal that was
-delivered to the thread (see
-.BR signal (7)).
-The remaining sleep time has been written
-into
-.I *rem
-so that the thread can easily call
-.BR nanosleep ()
-again and continue with the pause.
-.TP
-.B EINVAL
-The value in the
-.I tv_nsec
-field was not in the range [0, 999999999] or
-.I tv_sec
-was negative.
-.SH VERSIONS
-POSIX.1 specifies that
-.BR nanosleep ()
-should measure time against the
-.B CLOCK_REALTIME
-clock.
-However, Linux measures the time using the
-.B CLOCK_MONOTONIC
-clock.
-.\" See also http://thread.gmane.org/gmane.linux.kernel/696854/
-.\" Subject: nanosleep() uses CLOCK_MONOTONIC, should be CLOCK_REALTIME?
-.\" Date: 2008-06-22 07:35:41 GMT
-This probably does not matter, since the POSIX.1 specification for
-.BR clock_settime (2)
-says that discontinuous changes in
-.B CLOCK_REALTIME
-should not affect
-.BR nanosleep ():
-.RS
-.P
-Setting the value of the
-.B CLOCK_REALTIME
-clock via
-.BR clock_settime (2)
-shall
-have no effect on threads that are blocked waiting for a relative time
-service based upon this clock, including the
-.BR nanosleep ()
-function; ...
-Consequently,
-these time services shall expire when the requested duration elapses,
-independently of the new or old value of the clock.
-.RE
-.SH STANDARDS
-POSIX.1-2008.
-.SH HISTORY
-POSIX.1-2001.
-.P
-In order to support applications requiring much more precise pauses
-(e.g., in order to control some time-critical hardware),
-.BR nanosleep ()
-would handle pauses of up to 2 milliseconds by busy waiting with microsecond
-precision when called from a thread scheduled under a real-time policy
-like
-.B SCHED_FIFO
-or
-.BR SCHED_RR .
-This special extension was removed in Linux 2.5.39,
-and is thus not available in Linux 2.6.0 and later kernels.
-.SH NOTES
-If the
-.I duration
-is not an exact multiple of the granularity underlying clock (see
-.BR time (7)),
-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.
-.P
-The fact that
-.BR nanosleep ()
-sleeps for a relative interval can be problematic if the call
-is repeatedly restarted after being interrupted by signals,
-since the time between the interruptions and restarts of the call
-will lead to drift in the time when the sleep finally completes.
-This problem can be avoided by using
-.BR clock_nanosleep (2)
-with an absolute time value.
-.SH BUGS
-If a program that catches signals and uses
-.BR nanosleep ()
-receives signals at a very high rate,
-then scheduling delays and rounding errors in the kernel's
-calculation of the sleep interval and the returned
-.I remain
-value mean that the
-.I remain
-value may steadily
-.I increase
-on successive restarts of the
-.BR nanosleep ()
-call.
-To avoid such problems, use
-.BR clock_nanosleep (2)
-with the
-.B TIMER_ABSTIME
-flag to sleep to an absolute deadline.
-.P
-In Linux 2.4, if
-.BR nanosleep ()
-is stopped by a signal (e.g.,
-.BR SIGTSTP ),
-then the call fails with the error
-.B EINTR
-after the thread is resumed by a
-.B SIGCONT
-signal.
-If the system call is subsequently restarted,
-then the time that the thread spent in the stopped state is
-.I not
-counted against the sleep interval.
-This problem is fixed in Linux 2.6.0 and later kernels.
-.SH SEE ALSO
-.BR clock_nanosleep (2),
-.BR restart_syscall (2),
-.BR sched_setscheduler (2),
-.BR timer_create (2),
-.BR sleep (3),
-.BR timespec (3),
-.BR usleep (3),
-.BR time (7)