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 9.0