Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semget(2) — CLIX 3.1r7.6.22

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semctl(2)

semop(2)



  semget(2)                           CLIX                           semget(2)



  NAME

    semget - Gets a set of semaphores

  LIBRARY

    Standard C Library (libc.a)

  SYNOPSIS

    #include <sys/types.h>

    #include <sys/ipc.h>

    #include <sys/sem.h>

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

  PARAMETERS

    key     Specifies a key used by the kernel to uniquely identify a
            semaphore.

    nsems   Specifies the number of semaphores to associate with the returned
            semaphore identifier.

    semflg  Represents a flag for specifying permissions and other control
            information.

  DESCRIPTION

    The semget() function returns the semaphore identifier associated with
    key.

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

    ⊕  The value of key is equal to IPC_PRIVATE.

    ⊕  The value of 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:

    ⊕  The sem_perm.cuid, sem_perm.uid, sem_perm.cgid, and sem_perm.gid
       members are set equal to the effective user ID and effective group ID,



  2/94 - Intergraph Corporation                                              1






  semget(2)                           CLIX                           semget(2)



       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.

    ⊕  The value of sem_nsems is set equal to the value of nsems.

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

  EXAMPLES

    This example gets a semaphore identifier that has three semaphores with
    read/write access for the owner.  It creates a semaphore if it does not
    exist, and fails if it does:

    int semid;

    if ((semid = semget(75, 3, 0600 | IPC_CREAT | IPC_EXCL)) < 0) {
         perror("Could not get semaphores");
         exit(1);
    }


  RETURN VALUES

    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.

  ERRORS

    The semget() function fails if one or more of the following are true:

    [EINVAL]   The value of nsems is either less than or equal to 0 or greater
               than the system-imposed limit.

    [EACCES]   A semaphore identifier exists for key, but operation permission
               (see intro(2)) 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 0.

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



  2                                              Intergraph Corporation - 2/94






  semget(2)                           CLIX                           semget(2)



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

  RELATED INFORMATION

    Functions:  intro(2), semctl(2), semop(2)
















































  2/94 - Intergraph Corporation                                              3




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