PR_SET_MM - modify kernel memory map descriptor fields
Contents
Description
Modify certain kernel memory map descriptor fields of the calling process. Usually these fields are set
by the kernel and dynamic loader (see ld.so(8) for more information) and a regular application should not
use this feature. However, there are cases, such as self-modifying programs, where a program might find
it useful to change its own memory map.
The calling process must have the CAP_SYS_RESOURCE capability. The value in op is one of the options
below.
PR_SET_MM_START_CODEPR_SET_MM_END_CODEPR_SET_MM_START_DATAPR_SET_MM_END_DATAPR_SET_MM_START_STACKPR_SET_MM_START_BRKPR_SET_MM_BRKPR_SET_MM_ARG_STARTPR_SET_MM_ARG_ENDPR_SET_MM_ENV_STARTPR_SET_MM_ENV_ENDPR_SET_MM_AUXVPR_SET_MM_EXE_FILEPR_SET_MM_MAPPR_SET_MM_MAP_SIZE
Errors
EINVALop is not a valid value.
EPERM The caller does not have the CAP_SYS_RESOURCE capability.
History
Linux 3.3.
Before Linux 3.10, this feature is available only if the kernel is built with the
CONFIG_CHECKPOINT_RESTORE option enabled.
Library
Standard C library (libc, -lc)
Name
PR_SET_MM - modify kernel memory map descriptor fields
Return Value
On success, 0 is returned. On error, -1 is returned, and errno is set to indicate the error.
See Also
prctl(2), PR_SET_MM_START_CODE(2const), PR_SET_MM_END_CODE(2const), PR_SET_MM_START_DATA(2const),
PR_SET_MM_END_DATA(2const), PR_SET_MM_START_STACK(2const), PR_SET_MM_START_BRK(2const),
PR_SET_MM_BRK(2const), PR_SET_MM_ARG_START(2const), PR_SET_MM_ARG_END(2const),
PR_SET_MM_ENV_START(2const), PR_SET_MM_ENV_END(2const), PR_SET_MM_EXE_FILE(2const),
PR_SET_MM_MAP(2const), PR_SET_MM_MAP_SIZE(2const)
Linux man-pages 6.9.1 2024-06-01 PR_SET_MM(2const)
Standards
Linux.
Synopsis
#include<linux/prctl.h> /* Definition of PR_* constants */
#include<sys/prctl.h>intprctl(PR_SET_MM,longop,...);
