|
|
coherent
semctl() COHERENT System Call semctl()
Control semaphore operations
#include <sys/sem.h>
sseemmccttll(_s_e_m_i_d, _s_e_m_n_u_m, _c_m_d, _a_r_g)
iinntt _s_e_m_i_d, _c_m_d, _s_e_m_n_u_m;
uunniioonn sseemmuunn {
iinntt _v_a_l;
ssttrruucctt sseemmiidd_ddss *_b_u_f;
uunnssiiggnneedd sshhoorrtt _a_r_r_a_y[];
} _a_r_g;
semctl controls a variety of semaphore operations. cmd sets the
operation to be performed; the following cmds are executed with
respect to the semaphore specified by semid and semnum:
GGEETTVVAALL
Return the value of sseemmvvaall (READ).
SSEETTVVAALL
Set the value of sseemmvvaall to _a_r_g._v_a_l (ALTER).
GGEETTPPIIDD
Return the value of sseemmppiidd (READ).
GGEETTNNCCNNTT
Return the value of sseemmnnccnntt (READ).
GGEETTZZCCNNTT
Return the value of sseemmzzccnntt (READ).
The following cmds return and set, respectively, every semval in
the set of semaphores.
GGEETTAALLLL Place semvals into array pointed to by _a_r_g._a_r_r_a_y
(READ).
SSEETTAALLLL Set semvals according to the array pointed to by
_a_r_g._a_r_r_a_y (ALTER).
The following cmds are also available:
IIPPCC_SSTTAATT Place the current value of each member of the data
structure associated with semid into the structure
pointed to by _a_r_g._b_u_f (READ).
IIPPCC_SSEETT 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:
sem_perm.uid
sem_perm.gid
sem_perm.mode /* only low 9 bits */
This command can only be executed by a process that has
COHERENT Lexicon Page 1
semctl() COHERENT System Call semctl()
an effective user identifier equal to either that of
superuser or to the value of sem_perm.uid in the data
structure associated with semid.
IIPPCC_RRMMIIDD Remove the system identifier specified by semid from
the system and destroy the set of semaphores and data
structure associated with it. This cmd can only be ex-
ecuted by a process that has an effective user iden-
tifier equal to either that of super user or to the
value of sem_perm.uid in the data structure associated
with semid.
semctl will fail if one or more of the following are true:
* semid is not a valid semaphore identifier [EINVAL].
* semnum is less than zero or greater than sem_nsems [EINVAL].
* cmd is not a valid command [EINVAL].
* Operation permission is denied to the calling process.
[EACCES]
* cmd is SETVAL or SETALL and the value to which semval is to be
set is greater than the system imposed maximum [ERANGE].
* cmd is equal to IPC_RMID or IPC_SET and the effective user
identifier of the calling process is not equal to that of su-
peruser and it is not equal to the value of sem_perm.uid in
the data structure associated with semid [EPERM].
* arg.buf points to an illegal address [EFAULT].
***** Return Value *****
Upon successful completion, the value returned depends on cmd as
follows:
GGEETTVVAALL The value of sseemmvvaall.
GGEETTPPIIDD The value of sseemmppiidd.
GGEETTNNCCNNTT The value of sseemmnnccnntt.
GGEETTZZCCNNTT The value of sseemmzzccnntt.
All othersZero
Otherwise, semctl returns -1 and sets eerrrrnnoo to an appropriate
value.
***** Files *****
/usr/include/sys/ipc.h
/usr/include/sys/sem.h
/dev/sem
/drv/sem
COHERENT Lexicon Page 2
semctl() COHERENT System Call semctl()
***** See Also *****
COHERENT system calls, sem, semget(), semop()
***** Notes *****
To improve portability, the COHERENT system implements the
semaphore functions as a device driver rather than as an actual
system call.
COHERENT Lexicon Page 3
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.