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

# proc\_pid\_pagemap(5)

mapping of virtual pages

## NAME

/proc/pid/pagemap - mapping of virtual pages

## DESCRIPTION

- */proc/*pid*/pagemap* (since Linux 2.6.25)

  This file shows the mapping of each of the process's virtual pages into physical page frames or swap area. It contains one 64-bit value for each virtual page, with the bits set as follows:

  - 63

    If set, the page is present in RAM.

  - 62

    If set, the page is in swap space

  - 61 (since Linux 3.5)

    The page is a file-mapped page or a shared anonymous page.

  - 60–58 (since Linux 3.11)

    Zero

  - 57 (since Linux 5.14)

    If set, the page is write-protected through [**userfaultfd**(2)](/userfaultfd/2.md).

  - 56 (since Linux 4.2)

    The page is exclusively mapped.

  - 55 (since Linux 3.11)

    PTE is soft-dirty (see the kernel source file *Documentation/admin-guide/mm/soft-dirty.rst*).

  - 54–0

    If the page is present in RAM (bit 63), then these bits provide the page frame number, which can be used to index */proc/kpageflags* and */proc/kpagecount*. If the page is present in swap (bit 62), then bits 4–0 give the swap type, and bits 54–5 encode the swap offset.

-

  Before Linux 3.11, bits 60–55 were used to encode the base-2 log of the page size.

-

  To employ */proc/*pid*/pagemap* efficiently, use */proc/*pid*/maps* to determine which areas of memory are actually mapped and seek to skip over unmapped regions.

-

  The */proc/*pid*/pagemap* file is present only if the **CONFIG\_PROC\_PAGE\_MONITOR** kernel configuration option is enabled.

-

  Permission to access this file is governed by a ptrace access mode **PTRACE\_MODE\_READ\_FSCREDS** check; see [**ptrace**(2)](/ptrace/2.md).

## SEE ALSO

[**proc**(5)](/proc/5.md)
