HP-UX Reference (11i v2 07/12) - 2 System Calls (vol 5)
s
semctl(2) semctl(2)
NAME
semctl() - semaphore control operations
SYNOPSIS
#include <sys/sem.h>
int semctl(int semid,
int semnum,
int cmd,
...
);
union semun {
int val;
struct semid_ds *buf;
ushort *array;
} arg;
DESCRIPTION
The semctl() system call provides a variety of semaphore control operations as specified by cmd. The
fourth argument is optional and depends on the operation requested. If present, it must be of type
union
semun
, which the application program must explicitly declare. For the meaning of unspecified variables,
see semaphore identifier in glossary(9).
The following values for cmd are executed with respect to the semaphore specified by semid and semnum:
GETVAL Return the value of semval. Requires semaphore Read permission.
SETVAL Set the value of semval to arg.val , where arg is the fourth argument of
semctl()
taken as a union semun. When this cmd is successfully executed, the semadj
value corresponding to the specified semaphore in all processes is cleared. Requires
semaphore Alter permission.
GETPID Return the value of sempid. Requires semaphore Read permission.
GETNCNT Return the value of semncnt. Requires semaphore Read permission.
GETZCNT Return the value of semzcnt. Requires semaphore Read permission.
The following values for cmd return and set, respectively, every semval in the set of semaphores.
GETALL Place semvals into array pointed to by arg.array, where arg is the fourth argument of
semctl() taken as a union semun. Requires semaphore Read permission.
SETALL Set semvals according to the array pointed to by arg.array , where arg is the fourth
argument of
semctl() taken as a union semun. When this cmd is successfully
executed, the semadj values corresponding to each specified semaphore in all
processes are cleared. Requires semaphore Alter permission.
The following values for cmd are also available:
IPC_STAT Place the current value of each member of the data structure associated with semid
into the structure pointed to by arg.buf, where arg is the fourth argument of
semctl() taken as a union semun. The contents of this structure are defined in
glossary(9). Requires semaphore Read permission.
IPC_SET Set the value of the following members of the data structure associated with semid to
the corresponding value found in the structure pointed to by arg.buf, where arg is the
fourth argument of semctl() taken as a union semun:
sem_perm.uid
sem_perm.gid
sem_perm.mode /* only low 9 bits */
This cmd can only be executed by a process that has an effective user ID equal to
either that of a user with the OWNER privilege or to the value of either
sem_perm.uid or sem_perm.cuid in the data structure associated with semid.
IPC_RMID Remove the semaphore identifier specified by semid from the system and destroy the
set of semaphores and data structure associated with it. This cmd can only be exe-
cuted by a process that has an effective user ID equal to either that of a user with the
HP-UX 11i Version 2: December 2007 Update − 1 − Hewlett-Packard Company 351