System Calls shmctl(2)
NAME
shmctl - shared memory control operations
SYNOPSIS
#include
#include
#include
int shmctl(int shmid, int cmd, struct shmidds *buf);
DESCRIPTION
The shmctl() function provides a variety of shared memory
control operations as specified by cmd. The permission
required for a shared memory control operation is given as
{token}, where token is the type of permission needed. The
types of permission are interpreted as follows:
00400 READ by user
00200 WRITE by user
00040 READ by group
00020 WRITE by group
00004 READ by others
00002 WRITE by others
See the Shared Memory Operation Permissions section of
Intro(2) for more information.
The following operations require the specified tokens:
IPCSTAT Place the current value of each member of the
data structure associated with shmid into the
structure pointed to by buf. The contents of
this structure are defined in Intro(2). {READ}
IPCSET Set the value of the following members of the
data structure associated with shmid to the
corresponding value found in the structure
pointed to by buf:
shmperm.uid
shmperm.gid
shmperm.mode /* access permission bits only */
This command can be executed only by a process
that has appropriate privileges or an effec-
tive user ID equal to the value of
shmperm.cuid or shmperm.uid in the data
SunOS 5.11 Last change: 10 Apr 2007 1
System Calls shmctl(2)
structure associated with shmid.
IPCRMID Remove the shared memory identifier specified
by shmid from the system. The segment refer-
enced by the identifier will be destroyed when
all processes with the segment attached have
either detached the segment or exited. If the
segment is not attached to any process when
IPCRMID is invoked, it will be destroyed
immediately. This command can be executed only
by a process that has appropriate privileges
or an effective user ID equal to the value of
shmperm.cuid or shmperm.uid in the data
structure associated with shmid.
SHMLOCK Lock the shared memory segment specified by
shmid in memory. This command can be executed
only by a process that has appropriate
privileges.
SHMUNLOCK Unlock the shared memory segment specified by
shmid. This command can be executed only by a
process that has appropriate privileges.
A shared memory segment must be explicitly removed using
IPCRMID before the system can deallocate it and the
resources it uses.
RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is
returned and errno is set to indicate the error.
ERORS
The shmctl() function will fail if:
EACES The cmd argument is equal to IPCSTAT and
{READ} operation permission is denied to the
calling process.
EFAULT The buf argument points to an illegal address.
EINVAL The shmid argument is not a valid shared memory
identifier; or the cmd argument is not a valid
command or is IPCSET and shmperm.uid or
shmperm.gid is not valid.
SunOS 5.11 Last change: 10 Apr 2007 2
System Calls shmctl(2)
ENOMEM The cmd argument is equal to SHMLOCK and there
is not enough memory, or the operation would
exceed a limit or resource control on locked
memory.
EOVERFLOW The cmd argument is IPCSTAT and uid or gid is
too large to be stored in the structure pointed
to by buf.
EPERM The cmd argument is equal to IPCRMID or
IPCSET, the effective user ID of the calling
process is not equal to the value of
shmperm.cuid or shmperm.uid in the data
structure associated with shmid, and
{PRIVIPCOWNER} is not asserted in the effec-
tive set of the calling process.
The cmd argument is equal to SHMLOCK or
SHMUNLOCK and {PRIVPROCLOCKMEMORY} is not
asserted in the effective set of the calling
process.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
SEE ALSO
ipcs(1), Intro(2), shmget(2), shmop(2), attributes(5),
privileges(5), standards(5)
SunOS 5.11 Last change: 10 Apr 2007 3
|