> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man9/vm_page_insert.9.md).

# vm\_page\_insert.9

`vm_page_insert`, `vm_page_remove` — 从对象中添加/移除页面

## 名称

`vm_page_insert`, `vm_page_remove`

## 概要

```c
#include <sys/param.h>
#include <vm/vm.h>
#include <vm/vm_page.h>

void
vm_page_insert(vm_page_t m, vm_object_t object, vm_pindex_t pindex)

void
vm_page_remove(vm_page_t m)
```

## 描述

`vm_page_insert` 函数将页面添加到给定对象的给定索引处。页面被添加到 VM 页哈希表和对象的页面列表中，但不更新硬件页表。对于用户页面，将在访问时通过页错误引入。如果页面是内核页面，调用者需要负责将页面添加到内核的 pmap 中。

如果页面标志中设置了 `PG_WRITEABLE`，则对象标志中设置 `OBJ_WRITEABLE` 和 `OBJ_MIGHTBEDIRTY`。

`vm_page_remove` 函数从其对象和 VM 页哈希表中移除给定页面。在调用此函数之前页面必须忙碌，否则系统将产生恐慌。页面的 pmap 条目不会被此函数移除。

`vm_page_insert` 的参数如下：

**`m`** 要添加到对象的页面。

**`object`** 页面应添加到的对象。

**`pindex`** 页面在对象中的索引位置。

`vm_page_remove` 的参数如下：

**`m`** 要移除的页面。

## 实现说明

VM 对象中页面的索引是同一对象中截断到页边界的字节索引。例如，如果页面大小为 4096 字节，对象中的地址为 81944，则页面索引为 20。

## 作者

本手册页由 Chad David <davidc@acns.ab.ca> 编写。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man9/vm_page_insert.9.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
