---
name: "PR_SET_THP_DISABLE"
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_THP_DISABLE"
---

# PR\_SET\_THP\_DISABLE(2const)

set the state of the "THP disable" flags for the calling thread

## NAME

PR\_SET\_THP\_DISABLE - set the state of the "THP disable" flags for the calling thread

## LIBRARY

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

## SYNOPSIS

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

**int prctl(PR\_SET\_THP\_DISABLE, long** *thp\_disable***, unsigned long** *flags***,**           **0L, 0L);**

## DESCRIPTION

Set the state of the "THP disable" flags for the calling thread. If *thp\_disable* has a nonzero value, the THP disable flag is set according to the value of *flags*, otherwise it is cleared.

This [**prctl**(2)](/prctl/2.md) provides a method for disabling transparent huge pages for jobs where the code cannot be modified, and using a [**malloc**(3)](/malloc/3.md) hook with [**madvise**(2)](/madvise/2.md) is not an option (i.e., statically allocated data). The setting of the "THP disable" flags is inherited by a child created via [**fork**(2)](/fork/2.md) and is preserved across [**execve**(2)](/execve/2.md).

The behavior depends on the value of *flags*:

- **0**

  The [**prctl**(2)](/prctl/2.md) call will disable THPs completely for the process, irrespective of global THP controls or **MADV\_COLLAPSE**.

- **PR\_THP\_DISABLE\_EXCEPT\_ADVISED**

  The [**prctl**(2)](/prctl/2.md) call will disable THPs for the process except when the usage of THPs is advised. Consequently, THPs will only be used when:

  - •

    Global THP controls are set to "always" or "madvise" and *madvise(..., MADV\_HUGEPAGE)* or *madvise(..., MADV\_COLLAPSE)* is used.

  - •

    Global THP controls are set to "never" and *madvise(..., MADV\_COLLAPSE)* is used. This is the same behavior as if THPs would not be disabled on a process level.

## RETURN VALUE

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

## STANDARDS

Linux.

## HISTORY

Linux 3.15.

## SEE ALSO

[**prctl**(2)](/prctl/2.md), [**PR\_GET\_THP\_DISABLE**(2const)](/PR_GET_THP_DISABLE/2const.md)
