|
|
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>int shmctl(int shmid, int cmd, ... /* struct shmid_ds *buf */);
shm_perm.uid shm_perm.gid shm_perm.mode /only access permission bits
/
This command can be executed only by a process that has an effective user ID equal to the value of shm_perm.cuid or shm_perm.uid in the data structure associated with shmid, or by a process that has the P_OWNER privilege.
Details are provided in the shmid_ds data structure, where the relevant fields are:
off_t shm_offsize_t shm_nbytesIf shm_off and shm_nbytes are both set to zero, the policy applies to the entire shared memory segment.
int shm_placepolicy
The following are the possible values for int shm_placepolicy:
The granularity of the balanced allocations is given by
shm_granularity. This will be rounded up
if necessary to an integral multiple of the page size.
If shm_granularity is 0, the system default granularity should apply
The balanced allocation will be for future memory allocations only.
shm_cpugroup.
A value of NOCGID for shm_cpugroup specifies that
the CPU-Group where the caller is currently executing should
be used for the allocations.
The CPU-Group allocation will be for future memory allocations only.
cgid_t shm_cgshm_placepolicy indicates that allocation from a
particular CPU-Group is required. It specifies the required
CPU-Group.
unsigned int shm_granularityshm_placepolicy indicates that blanced allocation
across all CPU-Groups is required. It specifies the required
allocation granularity.
The SHM_SETPLACE command can be executed only by a process that
has an effective user ID equal to the value of shm_perm.cuid
or shm_perm.uid in the data structure associated with shmid or by
a process that has the P_OWNER privilege.