Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

opensem(2)

sigsem(2)

waitsem(2)





   creatsem(2)            (XENIX Compatibility Package)            creatsem(2)


   NAME
         creatsem - creates an instance of a binary semaphore.

   SYNOPSIS
         cc [flag ...] file ... -lx
         int creatsem(char *sem_name, int mode);

   Description
         creatsem defines a binary semaphore named by sem_name to be used by
         waitsem and sigsem to manage mutually exclusive access to a resource,
         shared variable, or critical section of a program.  creatsem returns
         a unique semaphore number, sem_num, 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:
               sem_num = creatsem("semaphore", mode);
         to create, initialize, and open the semaphore for that process.  All
         other processes using the semaphore should issue:
               sem_num = opensem("semaphore");
         to access the semaphore's identification value.  Note that a process
         cannot 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 period of execution.  Both the creating and opening
         processes use waitsem and sigsem to use the semaphore sem_num.

   DIAGNOSTICS
         creatsem returns the value -1 if an error occurs.  If the semaphore
         named by sem_name is already open for use by other processes, errno
         is set to EEXIST.  If the file specified exists but is not a
         semaphore type, errno is set to ENOTNAM.  If the semaphore has not
         been initialized by a call to creatsem, errno is set to EINVAL.

   SEE ALSO
         opensem(2), sigsem(2), waitsem(2).

   NOTES
         After a creatsem, you must do a waitsem to gain control of a given
         resource.


   7/91                                                                 Page 1





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