WAITSEM(S) XENIX System V WAITSEM(S)
Name
waitsem, nbwaitsem - Awaits and checks access to a resource
governed by a semaphore.
Syntax
int waitsem(sem_num);
int sem_num;
int nbwaitsem(sem_num);
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 wishing 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.
System Compatibility
waitsem can only be used to synchronize semaphores created
under
Version 3.0, not for System V semaphores.
See Also
creatsem(S), opensem(S), sigsem(S)
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
semaphore return with errno set to ENAVAIL when the process
controlling 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 an intervening sigsem, errno is set to EINVAL.
Notes
This feature is a XENIX specific enhancement and may not be
present in all UNIX implementations. This routine must be
linked with the linker option -lx.
Page 1 (printed 8/7/87)