Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ () — Motorola System V 88k Release 3.2 Version 1.2C

Media Vault

Software Library

Restoration Projects

Artifacts Sought



  SEMCTL(2)                                               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 semidds *buf;
            ushort *array;
       } arg;

  DESCRIPTION
       semctl provides a variety of semaphore control operations as
       specified by cmd.

       The following cmds are executed with respect to the
       semaphore 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
       semval in the set of semaphores.


  Page 1                                                   May 1989


















  SEMCTL(2)                                               SEMCTL(2)



            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:

            IPCSTAT   Place the current value of each member of
                       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}

            IPCSET    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:
                       semperm.uid
                       semperm.gid
                       semperm.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 super-user, or to the value
                       of semperm.cuid or semperm.uid in the data
                       structure associated with semid.

            IPCRMID   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 semperm.cuid or semperm.uid in
                       the data structure associated with semid.



  Page 2                                                   May 1989


















  SEMCTL(2)                                               SEMCTL(2)



            semctl fails if one or more of the following are true:

            [EINVAL]       Semid is not a valid semaphore
                           identifier.

            [EINVAL]       Semnum is less than zero or greater than
                           semnsems.

            [EINVAL]       Cmd is not a valid command.

            [EACCES]       Operation permission is denied to the
                           calling 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 IPCRMID or IPCSET and
                           the effective user ID of the calling
                           process is not equal to that of super-
                           user, or to the value of semperm.cuid
                           or semperm.uid in the data structure
                           associated with semid.

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

  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.



  Page 3                                                   May 1989
















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