waitsem(2) SYSTEM CALLS waitsem(2)
NAME
waitsem, nbwaitsem - awaits and checks access to a resource
governed by a semaphore.
SYNOPSIS
cc [flag ...] file ... -lx
waitsem(int sem_num);
nbwaitsem(int sem_num);
DESCRIPTION
waitsem gives the calling process access to the resource
governed by the semaphore sem_num. If the resource is in
use by another process, waitsem will put the process to
sleep until the resource becomes available; nbwaitsem will
return the error ENAVAIL. waitsem and nbwaitsem are used in
conjunction with sigsem to allow synchronization of
processes withing to access a resource. One or more
processes may waitsem on the given semaphore and will be put
to sleep until the process which currently has access to the
resource issues sigsem. sigsem causes the process which is
next in line on the semaphore's queue to be rescheduled for
execution. The semaphore's queue is organized in First In,
First Out (FIFO) order.
DIAGNOSTICS
waitsem returns the value (int) -1 if an error occurs. If
sem_num has not been previously opened by a call to opensem
or creatsem, errno is set to EBADF. If sem_num does not
refer to a semaphore type file, errno is set to ENOTNAM.
All processes waiting (or attempting to wait) on the sema-
phore return with errno set to ENAVAIL when the process con-
trolling the semaphore exits without relinquishing control
(thereby leaving the resource in an undeterminate state).
If a process does two waitsems in a row without doing a
intervening sigsem, errno is set to EINVAL.
SEE ALSO
opensem(2), creatsem(2).
Last change: XENIX Compatibility Package 1