sdget(2XNX) (XENIX System Compatibility) sdget(2XNX)
NAME
sdget, sdfree - (XENIX) attach and detach a shared data
segment
SYNOPSIS
cc [flag . . . ] flag . . . -lx
#include <sys/sd.h>
char *sdget(char *path, int flags,. . . /* long size, int mode */);
int sdfree(char *addr);
DESCRIPTION
sdget attaches a shared data segment to the data space of the
current process. The actions performed are controlled by the
value of flags. flags values are constructed by an OR of
flags from the following list:
SD_RDONLY Attach the segment for reading only.
SD_WRITE Attach the segment for both reading and writing.
SD_CREAT If the segment named by path exists and is not in
use (active), this flag will have the same effect
as creating a segment from scratch. Otherwise,
the segment is created according to the values of
size and mode. Read and write access to the
segment is granted to other processes based on the
permissions passed in mode, and functions the same
as those for regular files. Execute permission is
meaningless. The segment is initialized to
contain all zeroes.
SD_UNLOCK If the segment is created because of this call,
the segment will be made so that more than one
process can be between sdenter and sdleave calls.
The mode parameter must be included on the first call of the
sdget function.
sdfree detaches the current process from the shared data
segment that is attached at the specified address. If the
current process has done sdenter but not an sdleave for the
specified segment, sdleave will be done before detaching the
segment.
Copyright 1994 Novell, Inc. Page 1
sdget(2XNX) (XENIX System Compatibility) sdget(2XNX)
When no process remains attached to the segment, the contents
of that segment disappear, and no process can attach to the
segment without creating it by using the SD_CREAT flag in
sdget.
Return Values
On successful completion, the address at which the segment was
attached is returned. Otherwise, -1 is returned, and errno is
set to indicate the error.
Errors
sdget will fail if one or more of the following are true:
ENAMETOOLONG The file name specified is too long.
ELOOP The file name specified is resolvable due to a
lengthy symbolic link.
ENOTDIR The path specified contains a non-directory
component.
EEXIST A process tried to create a shared data segment
that exists and is in use.
ENOTNAM A process attempted an sdget on a file that
exists but is not a shared data type.
EINVAL A process attempted an sdget on a shared data
segment to which it is already attached.
REFERENCES
sdenter(2XNX), sdgetv(2XNX)
Copyright 1994 Novell, Inc. Page 2