%SEMCTL

%SEMCTL


%READ (AP/DOS) Index Level %SEMGET
Syntax code = %SEMCTL( semid, semnum, cmd, arg )
Category BASIC
Type C Function
Description performs semaphore control operations.

semid    Semaphore id returned by a call to semget().

semnum   Semaphore number in the set, when applicable (depending on "cmd").

cmd      Command code (see below).

arg      Dimensioned array which contains the argument (see below).


The following "cmd" are executed with respect to the semaphore specified by "semid" 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 following "cmd" apply to all semaphores in the set:
GETALL  Place all the semaphore values in the dimensioned array "arg".

SETALL  Set all the semaphores to the values contained in the dimensioned array "arg".


The following commands are also available:
IPC$STAT  Return a dimensioned array which contains the various s  fields of the Unix sempahore structures. The elements are (see the Unix Programmer's Reference guide):
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    Set the values of the following members of the data structure associated to "semid" 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.


Valid values for "cmd" are defined in "sem.h" and "ipc.h".
Options
See Also c function CFUNCTION %SEMOP %SEMGET
Example 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( semid, 0, SETALL, val )
Warnings
Compatibility D3/Unix AP 6.1
%READ (AP/DOS) Index Level %SEMGET