sdenter(2) SYSTEM CALLS sdenter(2)
NAME
sdenter, sdleave - synchronizes access to a shared data seg-
ment.
SYNOPSIS
cc [flag ...] file ... -lx
#include <sys/sd.h>
int sdenter(char *addr, int flags); int sdleave(char *addr);
DESCRIPTION
sdenter is used to indicate that the current process is
about to access the contents of a shared data segment. The
actions performed depend on the value of flags. flags
values are formed by OR-ing together entries from the fol-
lowing list: If another process has called sdenter but not
sdleave for the indicated segment, and the segment was not
created with the SD_UNLOCK flag set, return an ENAVAIL error
instead of waiting for the segment to become free. Indi-
cates that the process wants to write data to the shared
data segment. A process that has attached to a shared data
segment with the SD_RDONLY flag set will not be allowed to
enter with the SD_WRITE flag set. sdleave is used to indi-
cate that the current process is done modifying the contents
of a shared data segment. Only changes made between invoca-
tions of sdenter and sdleave are guaranteed to be reflected
in other processes. sdenter and sdleave are very fast; con-
sequently, it is recommended that they be called frequently
rather than leave sdenter in effect for any period of time.
In particular, system calls should be avoided between
sdenter and sdleave calls. The fork system call is forbid-
den between calls to sdenter and sdleave if the segment was
created without the SD_UNLOCK flag.
DIAGNOSTICS
Successful calls return 0. Unsuccessful calls return -1 and
errno is set to indicate the error. errno is set to EINVAL
if a process does an sdenter with the SD_WRITE flag set and
the segment is already attached with the SD_RDONLY flag set.
errno is set to ENAVAIL if the SD_NOWAIT flag is set for
sdenter and the shared data segment is not free.
SEE ALSO
sdget(2), sdgetv(2).
Last change: XENIX Compatibility Package 1