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

# vm\_map\_lock.9

`vm_map_lock`, `vm_map_unlock`, `vm_map_lock_read`, `vm_map_unlock_read`, `vm_map_trylock`, `vm_map_trylock_read`, `vm_map_lock_upgrade`, `vm_map_lock_downgrade` — vm\_map 加锁宏

## 名称

`vm_map_lock`, `vm_map_unlock`, `vm_map_lock_read`, `vm_map_unlock_read`, `vm_map_trylock`, `vm_map_trylock_read`, `vm_map_lock_upgrade`, `vm_map_lock_downgrade`

## 概要

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

void
vm_map_lock(vm_map_t map)

void
vm_map_unlock(vm_map_t map)

void
vm_map_lock_read(vm_map_t map)

void
vm_map_unlock_read(vm_map_t map)

int
vm_map_trylock(vm_map_t map)

int
vm_map_trylock_read(vm_map_t map)

int
vm_map_lock_upgrade(vm_map_t map)

int
vm_map_lock_downgrade(vm_map_t map)
```

## 描述

`vm_map_lock` 宏获取 `map` 上的独占锁。

`vm_map_unlock` 宏释放 `map` 上的独占锁。

`vm_map_lock_read` 宏获取 `map` 上的读锁。

`vm_map_unlock_read` 宏释放 `map` 上的读锁。

`vm_map_trylock` 宏尝试获取 `map` 上的独占锁。如果无法立即获取锁，则返回 `FALSE`；否则获取锁并返回 `TRUE`。

`vm_map_trylock_read` 宏尝试获取 `map` 上的读锁。如果无法立即获取锁，则返回 `FALSE`；否则获取锁并返回 `TRUE`。

`vm_map_lock_upgrade` 宏尝试原子地将 `map` 上的读锁升级为独占锁。

`vm_map_lock_downgrade` 宏尝试将 `map` 上的独占锁降级为读锁。

## 实现说明

目前，所有的加锁宏都将其锁实现为睡眠锁。

## 参见

[vm\_map(9)](/man/man9/vm_map.9.md)

## 作者

本手册页由 Bruce M Simpson <bms@spc.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/vm_map_lock.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.
