Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semctl(2) — Interactive 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semget(2)

semop(2)



          SEMCTL(2)            INTERACTIVE UNIX System            SEMCTL(2)



          NAME
               semctl - semaphore control operations

          SYNOPSIS
               #include <sys/types.h>
               #include <sys/ipc.h>
               #include <sys/sem.h>

               int semctl (semid, semnum, cmd, arg)
               int semid, cmd;
               int semnum;
               union semun {
                    int val;
                    struct semid_ds *buf;
                    ushort *array;
               } arg;

          DESCRIPTION
               The semctl system call provides a variety of semaphore con-
               trol operations as specified by cmd.

               The following cmds are executed with respect to the sema-
               phore specified by semid and semnum:

                    GETVAL     Return the value of semval [see intro(2)].
                               {READ}

                    SETVAL     Set the value of semval to arg.val.  {ALTER}
                               When this cmd is successfully executed, the
                               semadj value corresponding to the specified
                               semaphore in all processes is cleared.

                    GETPID     Return the value of sempid.  {READ}

                    GETNCNT    Return the value of semncnt.  {READ}

                    GETZCNT    Return the value of semzcnt.  {READ}

               The following cmds return and set, respectively, every sem-
               val in the set of semaphores.

                    GETALL     Place semvals into array pointed to by
                               arg.array.  {READ}

                    SETALL     Set semvals according to the array pointed
                               to by arg.array.  {ALTER} When this cmd is
                               successfully executed the semadj values
                               corresponding to each specified semaphore in
                               all processes are cleared.

               The following cmds are also available:

                    IPC_STAT   Place the current value of each member of


          Rev. C Software Development Set                            Page 1





          SEMCTL(2)            INTERACTIVE UNIX System            SEMCTL(2)



                               the data structure associated with semid
                               into the structure pointed to by arg.buf.
                               The contents of this structure are defined
                               in intro(2).  {READ}

                    IPC_SET    Set the value of the following members of
                               the data structure associated with semid to
                               the corresponding value found in the struc-
                               ture pointed to by arg.buf:
                               sem_perm.uid
                               sem_perm.gid
                               sem_perm.mode /* only low 9 bits */

                               This cmdf1 can only be executed by a process
                               that has an effective user ID equal to
                               either that of super-user, or to the value
                               of sem_perm.cuid or sem_perm.uid 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 executed by a
                               process that has an effective user ID equal
                               to either that of super-user, or to the
                               value of sem_perm.cuid or sem_perm.uid in
                               the data structure associated with semid.

                    The semctl system call fails if one or more of the fol-
                    lowing is true:

                    [EINVAL]   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.

                    [EACCES]   Operation permission is denied to the cal-
                               ling process [see intro(2)].

                    [ERANGE]   Cmd is SETVAL or SETALL and the value to
                               which semval is to be set is greater than
                               the system imposed maximum.

                    [EPERM]    Cmd is equal to IPC_RMID or IPC_SET and the
                               effective user ID of the calling process is
                               not equal to that of super-user or to the
                               value of sem_perm.cuid or sem_perm.uid in
                               the data structure associated with semid.

                    [EFAULT]   Arg.buf points to an illegal address.



          Rev. C Software Development Set                            Page 2





          SEMCTL(2)            INTERACTIVE UNIX System            SEMCTL(2)



          SEE ALSO
               intro(2), semget(2), semop(2).

          DIAGNOSTICS
               Upon successful completion, the value returned depends on
               cmd as follows:

                    GETVAL    The value of semval.
                    GETPID    The value of sempid.
                    GETNCNT   The value of semncnt.
                    GETZCNT   The value of semzcnt.
                    All others
                              A value of 0.

               Otherwise, a value of -1 is returned, and errno is set to
               indicate the error.







































          Rev. C Software Development Set                            Page 3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026