.\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH PR_SET_MM 2const 2025-05-17 "Linux man-pages 6.16" .SH NAME PR_SET_MM \- modify kernel memory map descriptor fields .SH LIBRARY Standard C library .RI ( libc ,\~ \-lc ) .SH SYNOPSIS .nf .BR "#include " " /* Definition of " PR_* " constants */" .B #include .P .BI "int prctl(PR_SET_MM, long " op ", ...);" .fi .SH DESCRIPTION Modify certain kernel memory map descriptor fields of the calling process. Usually these fields are set by the kernel and dynamic loader (see .BR 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. .P The calling process must have the .B CAP_SYS_RESOURCE capability. The value in .I op is one of the options below. .TP .B PR_SET_MM_START_CODE .TQ .B PR_SET_MM_END_CODE .TQ .B PR_SET_MM_START_DATA .TQ .B PR_SET_MM_END_DATA .TQ .B PR_SET_MM_START_STACK .TQ .B PR_SET_MM_START_BRK .TQ .B PR_SET_MM_BRK .TQ .B PR_SET_MM_ARG_START .TQ .B PR_SET_MM_ARG_END .TQ .B PR_SET_MM_ENV_START .TQ .B PR_SET_MM_ENV_END .TQ .B PR_SET_MM_AUXV .TQ .B PR_SET_MM_EXE_FILE .TQ .B PR_SET_MM_MAP .TQ .B PR_SET_MM_MAP_SIZE .SH RETURN VALUE On success, 0 is returned. On error, \-1 is returned, and .I errno is set to indicate the error. .SH ERRORS .TP .B EINVAL .I op is not a valid value. .TP .B EPERM The caller does not have the .B CAP_SYS_RESOURCE capability. .SH STANDARDS Linux. .SH HISTORY Linux 3.3. .\" commit 028ee4be34a09a6d48bdf30ab991ae933a7bc036 .P Before Linux 3.10, .\" commit 52b3694157e3aa6df871e283115652ec6f2d31e0 this feature is available only if the kernel is built with the .B CONFIG_CHECKPOINT_RESTORE option enabled. .SH SEE ALSO .BR prctl (2), .BR PR_SET_MM_START_CODE (2const), .BR PR_SET_MM_END_CODE (2const), .BR PR_SET_MM_START_DATA (2const), .BR PR_SET_MM_END_DATA (2const), .BR PR_SET_MM_START_STACK (2const), .BR PR_SET_MM_START_BRK (2const), .BR PR_SET_MM_BRK (2const), .BR PR_SET_MM_ARG_START (2const), .BR PR_SET_MM_ARG_END (2const), .BR PR_SET_MM_ENV_START (2const), .BR PR_SET_MM_ENV_END (2const), .BR PR_SET_MM_EXE_FILE (2const), .BR PR_SET_MM_MAP (2const), .BR PR_SET_MM_MAP_SIZE (2const)