_lwp_sema_init(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 atomi-
cally 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 sema-
phore, 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)
Man(1) output converted with
man2html