---
name: "vslock"
section: "9freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/vslock/9freebsd"
---

# vslock(9freebsd)

lock/unlock user space addresses in memory

## NAME

**vslock**, **vsunlock** – lock/unlock user space addresses in memory

## SYNOPSIS

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

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

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

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

*int*\

**vslock**(*void \*addr*, *size\_t len*);

*void*\

**vsunlock**(*void \*addr*, *size\_t len*);

## DESCRIPTION

The **vslock**() and **vsunlock**() functions respectively lock and unlock a range of addresses belonging to the currently running process into memory. The actual amount of memory locked is a multiple of the machine's page size. The starting page number is computed by truncating *addr* to the nearest preceding page boundary, and by rounding up *addr*, *+* *len* to the next page boundary. The process context to use for this operation is taken from the global variable *curproc*.

## RETURN VALUES

The **vslock**() function will return 0 on success, otherwise it will return one of the errors listed below.

## ERRORS

The **vslock**() function will fail if:

- \[EINVAL\]

  The *addr* and *len* parameters specify a memory range that wraps around the end of the machine address space.

- \[ENOMEM\]

  The size of the specified address range exceeds the system limit on locked memory.

- \[EFAULT\]

  Some portion of the indicated address range is not allocated. There was an error faulting/mapping a page.
