---
name: "PR_SET_MM_START_BRK"
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_START_BRK"
---

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

modify kernel memory map descriptor fields

## NAME

PR\_SET\_MM\_START\_BRK - 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\_START\_BRK, unsigned long** *addr***, 0L, 0L);**

## DESCRIPTION

Set the address above which the program heap can be expanded with [**brk**(2)](/brk/2.md) call.

The address must be greater than the ending address of the current program data segment. In addition, the combined size of the resulting heap and the data segment can't exceed the **RLIMIT\_DATA** resource limit (see [**setrlimit**(2)](/setrlimit/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).

- **EINVAL**

  *addr* is less than or equal to the end of the data segment or specifies a value that would cause the **RLIMIT\_DATA** resource limit to be exceeded.

## STANDARDS

Linux.

## HISTORY

Linux 3.3.

## SEE ALSO

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