USVSEMA(3P) USVSEMA(3P) NAME usvsema - release a semaphore C SYNOPSIS #include <ulocks.h> int usvsema (usema_t *sema); DESCRIPTION usvsema increments the count associated with sema. If there are any processes queued waiting for the semaphore the first one is awakened. usvsema uses the usema(7M) device to reactivate a suspended process. If the process to be awoken is no longer alive, usvsema will automatically attempt to awaken the next process waiting for the semaphore. In order to use a semaphore, the caller must have joined the shared arena out of which the semaphore is allocated (via usinit(3P)), and have a file descriptor to a usema device to unsuspend any waiting processes. As a convenience, usvsema will automatically do this for members of a share group, or for related (via fork(2)) processes. This automatic facility can generate the same errors as usinit(3P), and usopenpollsema(3P). These errors will be passed back to the caller. If tracing is enabled (see usinit(3P)) then any errors will cause a message to be printed to stderr. To avoid these errors and therefore not need to check for errors on every uvpsema call, have each process call usinit(3P) and each user of a pollable semaphore call usopenpollsema(3P). The following error can always occur: [EBADF] The underlying file descriptor for the semaphore was closed or re-used by the application. SEE ALSO uscpsema(3P), usinit(3P), usinitsema(3P), usnewsema(3P), usnewpollsema(3P), usopenpollsema(3P), uspsema(3P), ustestsema(3P), usema(7M). DIAGNOSTICS Upon successful completion the semaphore has been released and a value of 0 is returned. On error, -1 is returned and errno is set to indicate the error. Page 1