Suspend a thread until a timeout or signal occurs
Synopsis:
#include <time.h>
int nanosleep( const struct timespec* rqtp,
struct timespec* rmtp );
Arguments:
-
rqtp
- A pointer to a
timespec
structure that specifies the time interval for which you want to suspend
the thread.
-
rmtp
-
NULL, or a pointer to a timespec structure
where the function can store the amount of time remaining in the interval
(the requested time minus the time actually slept).
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The nanosleep() function causes the calling thread to be
suspended from execution until either:
- The time interval specified by the rqtp argument has elapsed
Or
- A signal is delivered to the thread, and the signal's action
is to invoke a signal-catching function or terminate the process.
Note: This function can interfere with the kernel's efforts to manage
power usage. The suspension time may be longer than requested because the argument value
is rounded up to be a multiple of the system timer resolution (see the
Tick, Tock: Understanding the Microkernel's Concept of
Time chapter of the
BlackBerry 10 OS
Programmer's Guide) or because of scheduling and other
system activity.
Returns:
- 0
- The requested time has elapsed.
- -1
- The nanosleep() function was interrupted by a signal
(
errno
is set).
Errors:
-
EAGAIN
- All timers are in use. You'll have to wait for a process to release
one.
-
EFAULT
- A fault occurred trying to access the buffers provided.
-
EINTR
- The nanosleep() function was interrupted by a signal.
-
EINVAL
- The number of nanoseconds specified by the tv_nsec member
of the
timespec
structure pointed to by rqtp is less than zero or greater
than or equal to 1000 million.
Classification:
POSIX 1003.1 TMR
| Safety: |
|
| Cancellation point |
Yes |
| Interrupt handler |
No |
| Signal handler |
No |
| Thread |
Yes |