---
name: "PR_SET_MM_ARG_START"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/PR_SET_MM_ARG_START"
---

# PR\_SET\_MM\_ARG\_START(2const)

modify kernel memory map descriptor fields

## NAME

PR\_SET\_MM\_ARG\_START, PR\_SET\_MM\_ARG\_END, PR\_SET\_MM\_ENV\_START, PR\_SET\_MM\_ENV\_END - modify kernel memory map descriptor fields

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/prctl.h>  /* Definition of PR_* constants */
#include <sys/prctl.h>
```

**int prctl(PR\_SET\_MM, PR\_SET\_MM\_ARG\_START, unsigned long** *addr***, 0L, 0L);** **int prctl(PR\_SET\_MM, PR\_SET\_MM\_ARG\_END, unsigned long** *addr***, 0L, 0L);** **int prctl(PR\_SET\_MM, PR\_SET\_MM\_ENV\_START, unsigned long** *addr***, 0L, 0L);** **int prctl(PR\_SET\_MM, PR\_SET\_MM\_ENV\_END, unsigned long** *addr***, 0L, 0L);**

## DESCRIPTION

- **PR\_SET\_MM\_ARG\_START**

  Set the address above which the program command line is placed.

- **PR\_SET\_MM\_ARG\_END**

  Set the address below which the program command line is placed.

- **PR\_SET\_MM\_ENV\_START**

  Set the address above which the program environment is placed.

- **PR\_SET\_MM\_ENV\_END**

  Set the address below which the program environment is placed.

The address passed with these calls should belong to a process stack area. Thus, the corresponding memory area must be readable, writable, and (depending on the kernel configuration) have the **MAP\_GROWSDOWN** attribute set (see [**mmap**(2)](/mmap/2.md)).

## RETURN VALUE

On success, 0 is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

- **EINVAL**

  *addr* is greater than **TASK\_SIZE** (the limit on the size of the user address space for this architecture).

## STANDARDS

Linux.

## HISTORY

Linux 3.5.

## SEE ALSO

[**prctl**(2)](/prctl/2.md), [**PR\_SET\_MM**(2const)](/PR_SET_MM/2const.md)
