KPAUSE(9)

KPAUSE(9) | Kernel Developer's Manual | KPAUSE(9)

# 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 before kpause() 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 without `SA_RESTART` property.
[`ERESTART`]
  kpause() returned as a result of a signal with `SA_RESTART` property.
[`EWOULDBLOCK`]
  The timeout expired.

# SEE ALSO

sigaction(2), condvar(9), delay(9), errno(9), hz(9), mstohz(9)

July 20, 2011 | NetBSD 8.3