Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought



     SEMGET(S)                 UNIX System V                 SEMGET(S)



     Name
          semget - get set of semaphores

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

          int semget (key, nsems, semflg)
          key_t key;
          int nsems, semflg;

     Description
          The semget system call returns the semaphore identifier
          associated with key.

          A semaphore identifier and associated data structure and set
          containing nsems semaphores (see intro(S)) are created for
          key if one of the following is true:

               key is equal to IPC_PRIVATE.

               key does not already have a semaphore identifier
               associated with it, and (semflg & IPC_CREAT) is
               ``true''.

          Upon creation, the data structure associated with the new
          semaphore identifier is initialized as follows:

               sem_perm.cuid, sem_perm.uid, sem_perm.cgid, and
               sem_perm.gid are set equal to the effective user ID and
               effective group ID, respectively, of the calling
               process.

               The low-order 9 bits of sem_perm.mode are set equal to
               the low-order 9 bits of semflg.

               sem_nsems is set equal to the value of nsems.

               sem_otime is set equal to 0 and sem_ctime is set equal
               to the current time.

          The data structure associated with each semaphore in the set
          is not initialized.  The function semctl with the command
          setval or setall can be used to initialize each semaphore.

          The semget system call fails if one or more of the following
          is true:

          [EINVAL]       nsems is either less than or equal to zero or
                         greater than the system-imposed limit.

          [EACCES]       A semaphore identifier exists for key, but
                         operation permission (see intro(S)] as
                         specified by the low-order 9 bits of semflg
                         would not be granted.

          [EINVAL]       A semaphore identifier exists for key, but
                         the number of semaphores in the set
                         associated with it is less than nsems, and
                         nsems is not equal to zero.

          [ENOENT]       A semaphore identifier does not exist for key
                         , and (semflg & IPC_CREAT) is ``false''.

          [ENOSPC]       A semaphore identifier is to be created, but
                         the system-imposed limit on the maximum
                         number of allowed semaphore identifiers
                         system wide would be exceeded.

          [ENOSPC]       A semaphore identifier is to be created, but
                         the system-imposed limit on the maximum
                         number of allowed semaphores system wide
                         would be exceeded.

          [EEXIST]       A semaphore identifier exists for key, but
                         (semflg & IPC_CREAT) and (semflg & IPC_EXCL)
                         are ``true''.

     See Also
          intro(S), semctl(S), semop(S)

     Diagnostics
          Upon successful completion, a non-negative integer, namely a
          semaphore identifier, is returned.  Otherwise, a value of -1
          is returned, and errno is set to indicate the error.

     Standards Conformance
          semget is conformant with:
          AT&T SVID Issue 2, Select Code 307-127;
          and The X/Open Portability Guide II of January 1987.

                                             (printed 6/20/89)



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