_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