Standard C Library Functions clocknanosleep(3C)
NAME
clocknanosleep - high resolution sleep with specifiable
clock
SYNOPSIS
#include
int clocknanosleep(clockidt clockid, int flags,
const struct timespec *rqtp, struct timespec *rmtp);
DESCRIPTION
If the flag TIMERABSTIME is not set in the flags argument,
the clocknanosleep() function causes the current 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 calling thread and its action is to invoke
a signal-catching function, or the process is terminated.
The clock used to measure the time is the clock specified by
clockid.
If the flag TIMERABSTIME is set in the flags argument, the
clocknanosleep() function causes the current thread to be
suspended from execution until either the time value of the
clock specified by clockid reaches the absolute time speci-
fied by the rqtp argument, or a signal is delivered to the
calling thread and its action is to invoke a signal-catching
function, or the process is terminated. If, at the time of
the call, the time value specified by rqtp is less than or
equal to the time value of the specified clock, then
clocknanosleep() returns immediately and the calling pro-
cess is not suspended.
The suspension time caused by this function can be longer
than requested because the argument value is rounded up to
an integer multiple of the sleep resolution, or because of
the scheduling of other activity by the system. But, except
for the case of being interrupted by a signal, the suspen-
sion time for the relative clocknanosleep() function (that
is, with the TIMERABSTIME flag not set) will not be less
than the time interval specified by rqtp, as measured by the
corresponding clock. The suspension for the absolute
clocknanosleep() function (that is, with the TIMERABSTIME
flag set) will be in effect at least until the value of the
corresponding clock reaches the absolute time specified by
rqtp, except for the case of being interrupted by a signal.
The use of the clocknanosleep() function has no effect on
the action or blockage of any signal.
SunOS 5.11 Last change: 5 Feb 2008 1
Standard C Library Functions clocknanosleep(3C)
The clocknanosleep() function fails if the clockid argu-
ment refers to the CPU-time clock of the calling thread. It
is unspecified if clockid values of other CPU-time clocks
are allowed.
RETURN VALUES
If the clocknanosleep() function returns because the
requested time has elapsed, its return value is 0.
If the clocknanosleep() function returns because it has
been interrupted by a signal, it returns the corresponding
error value. For the relative clocknanosleep() function, if
the rmtp argument is non-null, the timespec structure refer-
enced by it is updated to contain the amount of time remain-
ing in the interval (the requested time minus the time actu-
ally slept). If the rmtp argument is NUL, the remaining
time is not returned. The absolute clocknanosleep() func-
tion has no effect on the structure referenced by rmtp.
If clocknanosleep() fails, it shall return the correspond-
ing error value.
ERORS
The clocknanosleep() function will fail if:
EINTR The clocknanosleep() function was interrupted by
a signal.
EINVAL The rqtp argument specified a nanosecond value
less than zero or greater than or equal to 1,000
million; or the TIMERABSTIME flag was specified
in flags and the rqtp argument is outside the
range for the clock specified by clockid; or the
clockid argument does not specify a known clock,
or specifies the CPU-time clock of the calling
thread.
ENOTSUP The clockid argument specifies a clock for which
clocknanosleep() is not supported, such as a
CPU-time clock.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 5 Feb 2008 2
Standard C Library Functions clocknanosleep(3C)
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Committed
MT-Level MT-Safe
Standard See standards(5).
SEE ALSO
clockgetres(3C), nanosleep(3C), pthreadcondtimedwait(3C),
sleep(3C), attributes(5), standards(5)
SunOS 5.11 Last change: 5 Feb 2008 3
|