---
name: "vm_map_lock_read"
section: "9"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/vm_map_lock_read"
---

# vm\_map\_lock\_read(9)

vm\_map locking macros

## NAME

**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 locking macros

## SYNOPSIS

**#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*);

## DESCRIPTION

The **vm\_map\_lock**() macro obtains an exclusive lock on *map*.

The **vm\_map\_unlock**() macro releases an exclusive lock on *map*.

The **vm\_map\_lock\_read**() macro obtains a read-lock on *map*. Currently this is implemented as an exclusive lock.

The **vm\_map\_unlock\_read**() macro releases a read-lock on *map*.

The **vm\_map\_trylock**() macro attempts to obtain an exclusive lock on *map*. It returns FALSE if the lock cannot be immediately acquired; otherwise return TRUE with the lock acquired.

The **vm\_map\_trylock\_read**() macro attempts to obtain a read-lock on *map*. It returns FALSE if the lock cannot be immediately acquired; otherwise return TRUE with the lock acquired. Currently this is implemented as an exclusive lock.

The **vm\_map\_lock\_upgrade**() macro attempts to atomically upgrade a read-lock on *map* to an exclusive lock. As read-locks are currently implemented as exclusive locks, this macro is a no-op.

The **vm\_map\_lock\_downgrade**() macro attempts to downgrade an exclusive lock on *map* to a read-lock. As read-locks are currently implemented as exclusive locks, this macro is a no-op.

## IMPLEMENTATION NOTES

Currently, all of the locking macros implement their locks as sleep locks.

## SEE ALSO

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

## AUTHORS

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