---
name: "pmap"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/pmap/9"
---

# pmap(9)

machine-dependent portion of virtual memory subsystem

## NAME

**pmap** – machine-dependent portion of virtual memory subsystem

## SYNOPSIS

**#include \<sys/param.h\>**

**#include \<vm/vm.h\>**

**#include \<vm/pmap.h\>**

## DESCRIPTION

The **pmap** module is the machine-dependent portion of the FreeBSD VM (Virtual Memory) sub-system. Each function documented herein must have its own architecture-dependent implementation.

The **pmap** module is responsible for managing hardware-dependent objects such as page tables, address maps, TLBs, etc.

Machine-dependent code must provide the header file ⟨machine/pmap.h⟩. This file contains the definition of the *pmap* structure:

```
struct pmap {
        /* Contents defined by pmap implementation. */
};
typedef struct pmap *pmap_t;
```

This header file may also define other data structures used by the **pmap** implementation.

The header file ⟨vm/pmap.h⟩ defines a structure for tracking **pmap** statistics (see below). This structure is defined as:

```
struct pmap_statistics {
        long        resident_count; /* number of mapped pages */
        long        wired_count;    /* number of wired pages */
};
```

The implementation's *struct pmap* must contain an instance of this structure having the name *pm\_stats*, and it must be updated by the implementation after each relevant **pmap** operation.

## SEE ALSO

[pmap\_activate(9)](/pmap_activate/9.md), [pmap\_clear\_modify(9)](/pmap_clear_modify/9.md), [pmap\_copy(9)](/pmap_copy/9.md), [pmap\_copy\_page(9)](/pmap_copy_page/9.md), [pmap\_enter(9)](/pmap_enter/9.md), [pmap\_extract(9)](/pmap_extract/9.md), [pmap\_extract\_and\_hold(9)](/pmap_extract_and_hold/9.md), [pmap\_growkernel(9)](/pmap_growkernel/9.md), [pmap\_init(9)](/pmap_init/9.md), [pmap\_is\_modified(9)](/pmap_is_modified/9.md), [pmap\_is\_prefaultable(9)](/pmap_is_prefaultable/9.md), [pmap\_kextract(9)](/pmap_kextract/9.md), [pmap\_map(9)](/pmap_map/9.md), [pmap\_mincore(9)](/pmap_mincore/9.md), [pmap\_object\_init\_pt(9)](/pmap_object_init_pt/9.md), [pmap\_page\_exists\_quick(9)](/pmap_page_exists_quick/9.md), [pmap\_page\_init(9)](/pmap_page_init/9.md), [pmap\_pinit(9)](/pmap_pinit/9.md), [pmap\_pinit0(9)](/pmap_pinit0/9.md), [pmap\_protect(9)](/pmap_protect/9.md), [pmap\_qenter(9)](/pmap_qenter/9.md), [pmap\_qremove(9)](/pmap_qremove/9.md), [pmap\_quick\_enter\_page(9)](/pmap_quick_enter_page/9.md), [pmap\_quick\_remove\_page(9)](/pmap_quick_remove_page/9.md), [pmap\_release(9)](/pmap_release/9.md), [pmap\_remove(9)](/pmap_remove/9.md), [pmap\_remove\_all(9)](/pmap_remove_all/9.md), [pmap\_remove\_pages(9)](/pmap_remove_pages/9.md), [pmap\_resident\_count(9)](/pmap_resident_count/9.md), [pmap\_ts\_referenced(9)](/pmap_ts_referenced/9.md), [pmap\_unwire(9)](/pmap_unwire/9.md), [pmap\_wired\_count(9)](/pmap_wired_count/9.md), [pmap\_zero\_area(9)](/pmap_zero_area/9.md), [pmap\_zero\_page(9)](/pmap_zero_page/9.md), [vm\_map(9)](/vm_map/9.md)

## AUTHORS

This manual page was written by Bruce M Simpson ⟨*bms@spc.org*⟩.
