KPAUSE(9)              NetBSD 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
     [EWOULDBLOCK]      The timeout expired.

     [ERESTART]         kpause() returned as a result of a signal with
                        SA_RESTART property.

     [EINTR]            kpause() returned due to other reasons.  Typically as
                        a result of a signal without SA_RESTART property.

SEE ALSO
     sigaction(2), errno(9), condvar(9), mstohz(9), hz(9)

NetBSD 5.0_STABLE               January 2, 2008              NetBSD 5.0_STABLE
