HP-UX Reference (11i v3 07/02) - 2 System Calls (vol 5)
s
shmctl(2) shmctl(2)
NAME
shmctl() - shared memory control operations
SYNOPSIS
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
DESCRIPTION
The shmctl() system call provides a variety of shared memory control operations as specified by the cmd
argument. cmd can have the following values:
IPC_STAT 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 glos-
sary(9).
IPC_SET 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
either that of a user having appropriate privileges or to the value of either
shm_perm.uid or shm_perm.cuid in the data structure associated with shmid.
This cmd cannot be executed on a shared memory segment that has been created with
relaxed isolation.
IPC_RMID Remove the shared memory identifier specified by shmid from the system and destroy
the shared memory segment and data structure associated with it. If the segment is
attached to one or more processes, then the segment key is changed to
IPC_PRIVATE and the segment is marked removed. The segment disappears when
the last attached process detaches it. This cmd can only be executed by a process that
has an effective user ID equal to either that of a user with appropriate privileges or to
the value of either shm_perm.uid or shm_perm.cuid
in the data structure asso-
ciated with shmid.
SHM_LOCK Lock the shared memory segment specified by shmid in memory. This cmd can only
be executed by a process that either has an effective user ID equal to that of a user
having appropriate privileges or has an effective user ID equal to the value of either
shm_perm.uid or shm_perm.cuid in the data structure associated with shmid
and has the
PRIV_MLOCK privilege (see getprivgrp(2)).
SHM_UNLOCK Unlock the shared memory segment specified by shmid. This cmd can only be exe-
cuted by a process that either has an effective user ID equal to a user having appropri-
ate privileges or has an effective user ID equal to the value of either
shm_perm.uid
or shm_perm.cuid in the data structure associated with shmid and has the
PRIV_MLOCK privilege (see getprivgrp(2)).
RETURN VALUE
shmctl() returns the following values:
0 Successful completion.
-1 Failure. errno is set to indicate the error.
ERRORS
If shmctl() fails, errno is set to one of the following values.
[EACCES] cmd is equal to IPC_STAT and Read operation permission is denied to the calling
process (see shared memory operation permissions in glossary (9)).
[EFAULT] buf points to an illegal address. The reliable detection of this error is implementation
dependent.
[EINVAL] cmd is equal to SHM_UNLOCK and the shared-memory segment specified by shmid is
not locked in memory.
414 Hewlett-Packard Company − 1 − HP-UX 11i Version 3: February 2007