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)               SYSTEM CALLS                creatsem(2)



NAME
     creatsem - creates an instance of a binary semaphore.

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

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 primi-
     tives 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  pro-
     cess.  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.



            Last change: XENIX Compatibility Package            1



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