Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semctl(2) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semget(2)

semop(2)






       semctl(2)                                                  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 semid_ds *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.



                           Copyright 1994 Novell, Inc.               Page 1













      semctl(2)                                                  semctl(2)


            The following cmds are also available:

            IPC_STAT    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}

            IPC_SET     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:
                           sem_perm.uid
                           sem_perm.gid
                           sem_perm.mode /* only access permission bits */

                        This command can be executed only by a process
                        that has an effective user ID equal to the value
                        of sem_perm.cuid or sem_perm.uid in the data
                        structure associated with semid or to a process
                        that has the P_OWNER privilege.

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

         Return Values
            On success, semctl returns a value that depends on cmd:

            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

            On failure, semctl returns -1 and sets errno to identify the
            error.

         Errors
            In the following conditions, semctl fails and sets errno to:



                          Copyright 1994 Novell, Inc.               Page 2













       semctl(2)                                                  semctl(2)


             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
                            sem_nsems.

             EINVAL         cmd is not a valid command.

             EINVAL         cmd is IPC_SET and sem_perm.uid or sem_perm.gid
                            is not valid.

             EOVERFLOW      cmd is IPC_STAT 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 IPC_RMID or IPC_SET and the
                            effective user ID of the calling process is not
                            equal to the value of sem_perm.cuid or
                            sem_perm.uid in the data structure associated
                            with semid and the calling process does not
                            have P_OWNER privilege.

             EFAULT         arg.buf points to an illegal address.

       REFERENCES
             intro(2), semget(2), semop(2)
















                           Copyright 1994 Novell, Inc.               Page 3








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