USOPENPOLLSEMA(3P) USOPENPOLLSEMA(3P)
usopenpollsema - attach a file descriptor to a pollable semaphore
#include <ulocks.h>
int usopenpollsema (usema_t *sema, mode_t acc);
usopenpollsema attaches a file descriptor to a pollable semaphore. The
returned file descriptor is used when calling poll(2) or select(2) to
acquire the semaphore after an unsuccessful uspsema(3P).
If the caller is the first process to call usopenpollsema on sema then a
new semaphore device is allocated (see usema(7M)). The user and group id
of the semaphore device take on the effective user/group id of the
caller. The access mode is set to acc(see chmod(2)). Calls to
usopenpollsema on the same semaphore by other processes simply attach to
the previously allocated device. They must pass standard Unix file
permission tests to be allowed to attach.
All processes sharing a pollable semaphore, related and unrelated alike,
must call usopenpollsema before performing any semaphore operation on
sema.
Forked children must perform their own usopenpollsema, as the file
descriptor inherited from the parent through the fork(2) will not be
usable.
A process requires the file descriptor to call usvsema even if it never
calls uspsema.
usopenpollsema will fail if one or more of the following are true:
[EACCES] The caller does not have the required permission to open
one or both of the two semaphore device files, /dev/usema
and /dev/usemaclone.
[EACCES] The caller is attempting to attach to a previously
allocated semaphore device and does not have the requisite
permissions.
[ENOSPC] There are no more selectable semaphores available in the
system. This is configurable up to 255. See
/var/sysgen/master.d/usema.
[EMFILE] The system imposed limit for open file descriptors per
process {OPEN_MAX} has already been reached.
[ENFILE] The system file table has exceeded {NFILE_MAX} concurrently
open files.
Page 1
USOPENPOLLSEMA(3P) USOPENPOLLSEMA(3P)
[ENXIO] One or both of the two semaphore device files, /dev/usema
and /dev/usemaclone, do not exist, or the device is not
configured into the system.
chmod(2), open(2), amalloc(3P), usclosepollsema(3P), usconfig(3P),
uscpsema(3P), usctlsema(3P), usdumpsema(3P), usfreesema(3P),
usfreepollsema(3P), usinit(3P), usnewsema(3P), usnewpollsema(3P),
uspsema(3P), usvsema(3P), usema(7M).
Upon successful completion, a file descriptor is returned. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
PPPPaaaaggggeeee 2222 [ Back ]
|