---
name: "PR_SET_VMA"
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_VMA"
---

# PR\_SET\_VMA(2const)

set an attribute for virtual memory areas

## NAME

PR\_SET\_VMA - set an attribute for virtual memory areas

## LIBRARY

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

## SYNOPSIS

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

**int prctl(PR\_SET\_VMA, long** *attr***, unsigned long** *addr***, unsigned long** *size***,**           **const char \*\_Nullable** *val***);**

## DESCRIPTION

Sets an attribute specified in *attr* for virtual memory areas starting from the address specified in *addr* and spanning the size specified in *size*. *val* specifies the value of the attribute to be set.

Note that assigning an attribute to a virtual memory area might prevent it from being merged with adjacent virtual memory areas due to the difference in that attribute's value.

Currently, *attr* must be one of:

- **PR\_SET\_VMA\_ANON\_NAME**

  Set a name for anonymous virtual memory areas. *val* should be a pointer to a null-terminated string containing the name. The name length including null byte cannot exceed 80 bytes. If *val* is NULL, the name of the appropriate anonymous virtual memory areas will be reset. The name can contain only printable ascii characters ([**isprint**(3)](/isprint/3.md)), except **'\['**, **'\]'**, **'\\'**, **'$'**, and **'\`'**.

## RETURN VALUE

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

## ERRORS

- **EINVAL**

  *attr* is not a valid attribute.

- **EINVAL**

  *addr* is an invalid address.

## STANDARDS

Linux.

## HISTORY

Linux 5.17.

## SEE ALSO

[**prctl**(2)](/prctl/2.md)
