SHMCTL(2-SysV) RISC/os Reference Manual SHMCTL(2-SysV)
NAME
shmctl - shared memory control operations
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl (shmid, cmd, buf)
int shmid, cmd;
struct shmidds *buf;
DESCRIPTION
shmctl provides a variety of shared memory control opera-
tions as specified by cmd. The following cmds are avail-
able:
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:
shm_perm.uid
shm_perm.gid
shm_perm.mode /* only low 9 bits */
This cmd can only be executed by a process that
has an effective user ID equal to that of super
user, or to the value of shmperm.cuid or
shmperm.uid in the data structure associated
with shmid.
IPCRMID Remove the shared memory identifier specified by
shmid from the system and destroy the shared
memory segment and data structure associated with
it. This cmd can only be executed by a process
that has an effective user ID equal to that of
super user, or 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 cmd can only be executed by a
process that has an effective user ID equal to
super user.
Printed 1/15/91 Page 1
SHMCTL(2-SysV) RISC/os Reference Manual SHMCTL(2-SysV)
SHMUNLOCK Unlock the shared memory segment specified by
shmid. This cmd can only be executed by a pro-
cess that has an effective user ID equal to super
user.
ERRORS
shmctl will fail if one or more of the following are true:
[EINVAL] shmid is not a valid shared memory iden-
tifier.
[EINVAL] cmd is not a valid command.
[EACCES] cmd is equal to IPCSTAT and {READ}
operation permission is denied to the
calling process [see intro(2)].
[EPERM] cmd is equal to IPCRMID or IPCSET and
the effective user ID of the calling
process is not equal to that of super
user, or to the value of shmperm.cuid
or shmperm.uid in the data structure
associated with shmid.
[EPERM] Cmd is equal to SHMLOCK or SHMUNLOCK
and the effective user ID of the calling
process is not equal to that of super
user.
[EFAULT] Buf points to an illegal address.
[ENOMEM] cmd is equal to SHMLOCK and there is
not enough memory.
SEE ALSO
shmget(2), shmop(2).
DIAGNOSTICS
Upon successful completion, a value of 0 is returned. Other-
wise, a value of -1 is returned and errno is set to indicate
the error.
NOTES
The user must explicitly remove shared memory segments after
the last reference to them has been removed.
Page 2 Printed 1/15/91