> 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/phold.9.md).

# PHOLD.9

`PHOLD` — 保持进程

## 名称

`PHOLD`

## 概要

```c
#include <sys/proc.h>

PHOLD(struct proc *p)
_PHOLD(struct proc *p)
PRELE(struct proc *p)
_PRELE(struct proc *p)
PROC_ASSERT_HELD(struct proc *p)
PROC_ASSERT_NOT_HELD(struct proc *p)
```

## 描述

`PHOLD` 宏递增进程的保持计数，`PRELE` 宏递减进程的保持计数。

如果保持计数非零的进程尝试退出，它将睡眠直到其保持计数降至零，然后内核才开始释放与该进程关联的资源。一旦进程开始退出，增加其保持计数是无效的。因此，调用者不得尝试保持已设置 `P_WEXIT` 标志的进程。VM 守护进程不会换出属于保持计数非零进程的线程的内核栈。

`_PHOLD` 和 `_PRELE` 宏与 `PHOLD` 和 `PRELE` 相同，但必须在持有进程锁的情况下调用。

## 作者

本手册页由 Mark Johnston <markj@FreeBSD.org> 编写。


---

# 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/phold.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.
