Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ creatsem(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

opensem(S)

sigsem(S)

waitsem(S)


 creatsem(S)                    6 January 1993                    creatsem(S)


 Name

    creatsem - creates an instance of a binary semaphore

 Syntax


    cc  . . .  -lx


    int creatsem (sem_name, mode)
    char *sem_name;
    int mode;


 Description

    creatsem defines a binary semaphore named by semname to be used by
    waitsem(S) and sigsem(S) to manage mutually exclusive access to a
    resource, shared variable, or critical section of a program.  creatsem
    returns a unique semaphore number, semnum, which may then be used as the
    parameter in waitsem and sigsem calls.  Semaphores are special files of 0
    length.  The filename space is used to provide unique identifiers for
    semaphores.  mode sets the accessibility of the semaphore using the same
    format as file access bits. Access to a semaphore is granted only on the
    basis of the read access bit; the write and execute bits are ignored.

    A semaphore can be operated on only by a synchronizing primitive, such as
    waitsem or sigsem, by creatsem which initializes it to some value, or by
    opensem which opens the semaphore for use by a process.  Synchronizing
    primitives are guaranteed to be executed without interruption once
    started.  These primitives are used by associating a semaphore with each
    resource (including critical code sections) to be protected.

    The process controlling the semaphore should issue:

       semnum = creatsem(semaphore, mode);

    to create, initialize, and open the semaphore for that process.  All
    other processes using the semaphore should issue:

       semnum = opensem(semaphore);

    to access the semaphore's identification value.  Note that a process can-
    not open and use a semaphore that has not been initialized by a call to
    creatsem, nor should a process open a semaphore more than once in one pe-
    riod of execution.  Both the creating and opening processes use waitsem
    and sigsem to use the semaphore semnum.

 Diagnostics

    creatsem returns the value -1 if an error occurs.  errno is set under
    these conditions:

    [EEXIST]    The semaphore named by semname is already open for use by
                other processes.

    [ENAVAIL]   The semaphore has not been initialized by a call to creatsem.

    [ENOTNAM]   The file specified exists but is not a semaphore type.


 Notes

    After a calling creatsem, use waitsem to gain control of a given
    resource.

 See also

    opensem(S), sigsem(S), waitsem(S)

 Compatibility

    creatsem can only be used to define UNIX version 3.0 type semaphores, not
    UNIX System V type semaphores.

    This feature is a XENIX specific enhancement and may not be present in
    all UNIX implementations.

 Standards conformance

    creatsem is an extension of AT&T System V provided by the Santa Cruz
    Operation.


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