_LWP_SEMA_WAIT(2) System Calls _LWP_SEMA_WAIT(2)
NAME
_lwp_sema_wait, _lwp_sema_trywait, _lwp_sema_init, _lwp_sema_post -
semaphore operations
SYNOPSIS
#include <sys/lwp.h>
int _lwp_sema_wait(
lwp_sema_t *sema);
int _lwp_sema_trywait(
lwp_sema_t *sema);
int _lwp_sema_init(
lwp_sema_t *sema,
int count);
int _lwp_sema_post(
lwp_sema_t *sema);
DESCRIPTION
Conceptually, a semaphore is an non-negative integer count that is
atomically incremented and decremented. Typically this represents the
number of resources available. The
_lwp_sema_init() function
initializes the count,
_lwp_sema_post() atomically increments the
count, and
_lwp_sema_wait() waits for the count to become greater
than 0 and then atomically decrements it.
LWP semaphores must be initialized before use. The
_lwp_sema_init() function initializes the count associated with the LWP semaphore
pointed to by
sema to
count.
The
_lwp_sema_wait() function blocks the calling LWP until the
semaphore count becomes greater than 0 and then atomically decrements
it.
The
_lwp_sema_trywait() function atomically decrements the count if
it is greater than zero. Otherwise it returns an error.
The
_lwp_sema_post() function atomically increments the semaphore
count. If there are any LWPs blocked on the semaphore, one is
unblocked.
RETURN VALUES
Upon successful completion,
0 is returned. A non-zero value indicates
an error.
ERRORS
The
_lwp_sema_init(),
_lwp_sema_trywait(),
_lwp_sema_wait(), and
_lwp_sema_post() functions will fail if:
EINVAL The
sema argument points to an invalid semaphore.
EFAULT The
sema argument points to an illegal address.
The
_lwp_sema_wait() function will fail if:
EINTR The function execution was interrupted by a signal or
fork(2).
The
_lwp_sema_trywait() function will fail if:
EBUSY The function was called on a semaphore with a zero count.
The
_lwp_sema_post() function will fail if:
EOVERFLOW The value of the
sema argument exceeds
SEM_VALUE_MAX.
SEE ALSO
fork(2) May 8, 1998 _
LWP_SEMA_WAIT(2)