SV_WAIT_SIG(D3)SV_WAIT_SIG(D3)NAMESV_WAIT_SIG - sleep on a synchronization variable
SYNOPSIS
#include <sys/ksynch.h>
#include <sys/ddi.h>
int SV_WAIT_SIG(sv_t *svp, void *lkp, int rv);
Arguments
svp Pointer to the synchronization variable on which to sleep.
lkp Pointer to either a basic lock or a mutual exclusion lock.
lkp Return value from LOCK(D3), or 0.
DESCRIPTIONSV_WAIT_SIG causes the calling process to go to sleep waiting for a call
to SV_SIGNAL or SV_BROADCAST for the synchronization variable specified
by svp.
SV_WAIT_SIG may be interrupted by a signal, in which case it will return
early without waiting for a call to SV_SIGNAL or SV_BROADCAST.
If the function is interrupted by a job control signal which results in
the caller entering a stopped state, when continued, the SV_WAIT_SIG
function will return TRUE as if the process has been awakened by a call
to SV_SIGNAL or SV_BROADCAST.
If the function is interrupted by a signal other than a job control
signal, or by a job control stop signal that does not result in the
caller stopping (because the signal has a non-default disposition), the
SV_WAIT_SIG call will return FALSE.
The lock specified by lkp must be held by the caller upon entry. The
lock is released after the process is queued on the synchronization
variable -- when the caller returns from SV_WAIT_SIG the lock is not
held. If lkp specifies a basic lock, rv must specify the return value
from the lock acquisition call; if lkp specifies a mutual exclusion
(sleeping) lock, rv must be 0.
Return Values
SV_WAIT_SIG returns TRUE (a non-zero value) if the caller woke up because
of a call to SV_SIGNAL or SV_BROADCAST, or if the caller was stopped and
subsequently continued. SV_WAIT_SIG returns FALSE (zero) if the caller
returned early because of a signal other than a job control stop signal,
or by a job control stop signal that did not result in the caller
stopping because the signal had a non-default disposition.
Level
Base only.
Page 1
SV_WAIT_SIG(D3)SV_WAIT_SIG(D3)
Synchronization Constraints
May sleep.
Driver-defined basic locks (with the exception of the lock specified by
lkp) may not be held across calls to this function.
Driver-defined sleep locks may be held across calls to this function.
REFERENCESLOCK(D3), UNLOCK(D3), MUTEX_LOCK(D3), MUTEX_UNLOCK(D3), SV_ALLOC(D3),
SV_INIT(D3), SV_DEALLOC(D3), SV_DESTROY(D3), SV_WAIT(D3), SV_SIGNAL(D3),
SV_BROADCAST(D3), signals(D5).
Page 2