VMS Help
CRTL, semget
*Conan The Librarian
|
Gets a set of semaphores.
This function is supported on OpenVMS Integrity servers and
Alpha only.
Format
#include <sem.h>
int semget (key_t key, int nsems, int semflg);
key
The key for which the associated semaphore identifier is
returned.
nsems
Value used to initialize the sem_nsems member of the semid_ds
data structure. See the description.
semflg
Flag used to initialize the low-order 9 bits of the sem_perm.mode
member of the semid_ds data structure associated with the new
semaphore. See the description.
value
The initial value to be given to the semaphore. This argument is
used only when the semaphore is being created.
The semget function returns the semaphore identifier associated
with key.
A semaphore identifier with its associated semid_ds data
structure and its associated set of nsems semaphores (see
the <sys/sem.h> header file) is created for key if one of the
following is true:
o The key argument is equal to IPC_PRIVATE.
o The key argument does not already have a semaphore identifier
associated with it and (semflg &IPC_CREAT) is nonzero.
When it is created, the semid_ds data structure associated with
the new semaphore identifier is initialized as follows:
o In the operation permissions structure sem_perm.cuid, sem_
perm.uid, sem_perm.cgid, and sem_perm.gid are set equal to the
effective user ID and effective group ID, respectively, of the
calling process.
o The low-order 9 bits of sem_perm.mode are set equal to the
low-order 9 bits of the semflg argument.
o The variable sem_nsems is set equal to the value of the nsems
argument.
o The variable sem_otime is set equal to 0 and the variable sem_
ctime is set equal to the current time.
o The data structure associated with each semaphore in the
set does not need to be initialized. You can use the semctl
function with the command SETVAL or SETALL to initialize each
semaphore.
n Successful completion. The function returns a
non-negative integer semaphore identifier.
-1 Indicates an error. The function sets errno to
one of the following values:
o EACCES - A semaphore identifier exists for
key, but operation permission as specified
by the low-order 9 bits of semflg was not
granted.
o EEXIST - A semaphore identifier exists
for key but ((semflg &IPC_CREAT) &&(semflg
&IPC_EXCL)) is nonzero.
o EFAULT - The arguments passed to the
function are not accessible.
o EINVAL - The value of nsems is either
less than or equal to 0 or greater than
the system-imposed limit, or a semaphore
identifier exists for key, but the number
of semaphores in the set associated with it
is less than nsems and nsems is not equal
to 0.
o ENOENT - A semaphore identifier does not
exist for key and (semflg &IPC_CREAT) is
equal to 0.
o ENOSPC - A semaphore identifier is to be
created but the system-imposed limit on
the maximum number of allowed semaphores
system-wide will be exceeded.
o EVMSERR - OpenVMS specific nontranslatable
error code.