NAME
kpause
—
make the calling LWP sleep
SYNOPSIS
#include
<sys/proc.h>
int
kpause
(const
char *wmesg, bool
intr, int timeo,
kmutex_t *mtx);
DESCRIPTION
kpause
()
makes the calling LWP sleep. It's similar to
cv_timedwait_sig(9) without the corresponding
cv_signal(9).
kpause
()
can wake up spontaneously. Callers should prepare to handle it.
- wmesg
- Specifies a string of no more than 8 characters that describes the
resource or condition associated with the call of
kpause
(). The kernel does not use this argument directly but makes it available for utilities such as ps(1) to display. - intr
- If true, sleep interruptably. If the LWP receives a signal, or is interrupted by another condition such as its containing process exiting, the wait is ended early and an error code returned.
- timeo
- Specify a timeout. It is an architecture and system dependent value
related to the number of clock interrupts per second. See
hz(9)
for details. The
mstohz(9) macro can be used to convert a timeout expressed in
milliseconds to one suitable for
kpause
().Zero means no timeout.
- mtx
- Convenience and symmetry with other synchronization operations. If not
NULL
, mtx will be released once the LWP has prepared to sleep, and will be reacquired beforekpause
() returns.
RETURN VALUES
kpause
() returns 0 when waking up
spontaneously. Otherwise, it returns an error number.
ERRORS
- [
EINTR
] kpause
() returned due to other reasons. Typically as a result of a signal withoutSA_RESTART
property.- [
ERESTART
] kpause
() returned as a result of a signal withSA_RESTART
property.- [
EWOULDBLOCK
] - The timeout expired.
SEE ALSO
sigaction(2), condvar(9), delay(9), errno(9), hz(9), mstohz(9)