%semctl() function

The %semctl() function performs semaphore control operations.

For Windows: Not Supported


code = %semctl(sem-ID, semnum, cmd, arg)


sem-ID Semaphore ID returned by a call to %semget().
semnum Semaphore number in the set, when applicable (depending on cmd).
cmd Valid values for cmd are defined in sem.h and ipc.h. The commands below are executed with respect to the semaphore specified by sem-ID and semnum:
getval Returns the value of semval.
setval Sets semval to the value of arg.
getpid Returns the value of sempid.
getncnt Returns the value of semncnt.
getzcnt Returns the value of semzcnt.
The commands below apply to all semaphores in the set:
getall Place all the semaphore values in the arg dimensioned array.
setall Set all the semaphores to the values contained in the dimensioned array arg.
These commands are also available:
ipc$stat Return a dimensioned array that contains the various fields of the UNIX semaphore structures. The elements are (see the UNIX system documentation):
1 sem_perm.uid
2 sem_perm.cid
3 sem_perm.guid
4 sem_perm.gcid
5 sem_perm.mode
6 sem_perm.seq
7 sem_perm.key
8 sem_nsems
9 sem_otime
10 sem_ctime
ipc$set Sets the values of the below members of the data structure associated to sem-ID to the first three elements of the array arg:
1 sem_perm.uid
2 sem_perm.gid
3 sem_perm.mode
ipc$rmid Removes the semaphore identifier.
arg Dimensioned array that contains the argument.


include dm,bp,unix.h ipc.h
include dm,bp,unix.h sem.h
* Set initial semaphore values
dim val(3)
mat val=0
%semctl(sem-ID, 0, setall, val)