semget(2) DG/UX 4.30 semget(2)
NAME
semget - Get a set of semaphores.
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget (key, nsems, semflg)
key_t key;
int nsems;
int semflg;
PARAMETERS
key A user-defined name for the semaphore set.
nsems The requested number of semaphores in the
semaphore set.
semflg A set of flags indicating the requested
permission state of the semaphore set,
whether a new semaphore set should be
created, and whether the semaphore set should
be held exclusively.
DESCRIPTION
Semget returns the semaphore set identifier associated with
<key>. This semaphore set identifier may then be used in
other semaphore set operations as specified by semctl and
semop. Semget can be used to get the semaphore set
identifier of an already existing semaphore set or to create
a new semaphore set with <nsems> semaphores.
Four options are available:
* Create a private semaphore set.
In this case, <key> is IPC_PRIVATE.
A process can create a "private" semaphore set by using
the special IPC_PRIVATE key. The system will create a
semaphore set identifier that is private to the
process. The semaphore set identifier will not be
returned to other processes regardless of what key
value they specify.
The newly created semaphore set can be shared among
other processes by distributing the semaphore set
identifier.
Licensed material--property of copyright holder(s) Page 1
semget(2) DG/UX 4.30 semget(2)
A process can make multiple semget operations
specifying IPC_PRIVATE. The identifiers returned will
be unique and the associated semaphore sets will be
different.
* Find <key> if already defined.
In this case, the IPC_CREAT and IPC_EXCL bits of
<semflg> are clear and <key> is not IPC_PRIVATE.
The semaphore set identifier associated with the given
key is returned. An error is given if one of the
following conditions hold:
* No semaphore set identifier is associated with <key>.
* A semaphore set identifier is associated with <key> but
the permission rights of the semaphore set do not
include those specified by the low-order 9 bits of
<semflg>.
* A semaphore set identifier is associated with <key> but
<nsems> is non-zero and the number of semaphores in the
semaphore set is less than <nsems>.
* Create only if <key> not already defined.
In this case, the IPC_CREAT and IPC_EXCL bits of
<semflg> are both set and <key> is not IPC_PRIVATE.
If a semaphore set identifier already exists for <key>
an error is returned. Otherwise, a semaphore set
identifier and associated semaphore set are created.
The semaphore set identifier will be returned to other
processes that specify the same key value.
* Find <key> if already defined, otherwise create.
In this case, the IPC_CREAT bit of <semflg> is set, the
IPC_EXCL bit of <semflg> is clear, and <key> is not
IPC_PRIVATE.
If a semaphore set identifier already exists for <key>,
this is identical to the second option above).
Otherwise, this is identical to the third option above.
If a new semaphore set is created, its attributes are
initialized as follows:
* The semaphore set creator's user id (sem_perm.cuid) and
the semaphore set's user id (sem_perm.uid) are set to
the effective user id of the calling process.
Licensed material--property of copyright holder(s) Page 2
semget(2) DG/UX 4.30 semget(2)
* The semaphore set creator's group id (sem_perm.cgid)
and the semaphore set's group id (sem_perm.gid) are set
to the effective group id of the calling process.
* The semaphore set's permission rights (in
sem_perm.mode) are set to the low-order 9 bits of
<semflg>.
* The number of semaphores in the semaphore set
(sem_nsems) is set to <nsems>.
* The most recent time a semop operation was performed
(sem_otime) is set to the zero value.
* The most recent time the semaphore set attributes were
changed (sem_ctime) is set to the current time.
* The semaphore's value is set to zero.
* The process id of the last process to perform an
operation on the semaphore is set to zero.
* The number of processes waiting for the semaphore's
value to become zero is zero.
* The number of processes waiting for the semaphore's
value to increase is zero.
* No processes have a semaphore adjustment value for the
semaphore.
ACCESS CONTROL
None.
RETURN VALUE
<semid> A non-negative integer that identifies the
semaphore set associated with <key>.
-1 An error occurred. Errno is set to indicate
the error.
EXCEPTIONS
If a semaphore set identifier exists for <key>, errno may be
set to one of these values:
EACCES The permission rights of the semaphore set do
not include those specified by the low-order
9 bits of <semflg>.
Licensed material--property of copyright holder(s) Page 3
semget(2) DG/UX 4.30 semget(2)
EINVAL <nsems> is non-zero, and the number of
semaphores in the set associated with <key>
is less than <nsems>.
EEXIST Both the IPC_CREAT and IPC_EXCL bits of
<semflg> are set.
If a semaphore set identifier does not exist for <key>,
errno may be set to one of these values:
EINVAL <nsems> is either less than or equal to zero
or greater than the system-imposed limit.
ENOENT The IPC_CREAT bit of <semflg> is clear.
ENOSPC Creating the new semaphore set would cause
the system-imposed limit on the maximum
number of allowed semaphore sets system-wide
to be exceeded.
SEE ALSO
intro(2), ipcrm(1), ipcs(1), semctl(2), semop(2).
Licensed material--property of copyright holder(s) Page 4