Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semctl(2) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semget(2)

semop(2)



semctl(2)                        UNIX System V                        semctl(2)


NAME
      semctl - semaphore control operations

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

      union semun {
           int val;
           struct semidds *buf;
           ushort *array;
      };

      int semctl(int semid, int semnum, int cmd, ... /* union semun 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
                       command is successfully executed, the semadj value
                       corresponding to the specified semaphore in all
                       processes is cleared.

            GETPID     Return the value of (int) 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.

            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


10/89                                                                    Page 1







semctl(2)                        UNIX System V                        semctl(2)


                       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 access permission bits */

                       This command can be executed only 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 command only be
                       executed only 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.

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

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

      EINVAL         semid is not a valid semaphore identifier.

      EINVAL         semnum is less than 0 or greater than semnsems.

      EINVAL         cmd is not a valid command.

      EINVAL         cmd is IPCSET and semperm.uid or semperm.gid is not
                     valid.

      EOVERFLOW      cmd is IPCSTAT and uid or gid is too large to be stored
                     in the structure pointed to by arg.buf.

      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.





Page 2                                                                    10/89







semctl(2)                        UNIX System V                        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 (int) 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.









































10/89                                                                    Page 3





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