Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ semget(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

semctl(S)

semop(S)


 semget(S)                      6 January 1993                      semget(S)


 Name

    semget - get set of semaphores

 Syntax


    cc  . . .  -lc


    #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 are created for key if one of the following is true:

    +  key is equal to IPCPRIVATE.

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

    Upon creation, the data structure associated with the new semaphore iden-
    tifier is initialized as follows:

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

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

    +  semnsems is set equal to the value of nsems.

    +  semotime is set equal to 0 and semctime is set equal to the current
       time.

    The data structure associated with each semaphore in the set is not ini-
    tialized.  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:

    [EACCES]    A semaphore identifier exists for key, but operation permis-
                sion as specified by the low-order 9 bits of semflg would not
                be granted.

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

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

    [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 &
                IPCCREAT) 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.


 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.

 See also

    semctl(S), semop(S)

 Standards conformance

    semget is conformant with:
    AT&T SVID Issue 2;
    and X/Open Portability Guide, Issue 3, 1989.


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