creatsem(2XNX) (XENIX System Compatibility) creatsem(2XNX)
NAME
creatsem - (XENIX) create an instance of a binary semaphore
SYNOPSIS
cc [flag . . . ] flag . . . -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.
Return Values
creatsem returns the value -1 if an error occurs. If the
semaphore named by sem_name is already open for use by other
Copyright 1994 Novell, Inc. Page 1
creatsem(2XNX) (XENIX System Compatibility) creatsem(2XNX)
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.
REFERENCES
opensem(2), sigsem(2XNX), waitsem(2XNX)
NOTICES
After a creatsem, you must do a waitsem to gain control of a
given resource.
Copyright 1994 Novell, Inc. Page 2