vslock(9)

vslock9

Lock/unlock user space addresses in memory

Usage

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

Overview

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.

Releases

77 releases since FreeBSD 3.0-RELEASE; the text changed 39 times.

  1. 3.0–3.5.1
  2. 4.0–4.2
  3. 4.3
  4. 4.4
  5. 4.5–4.11
  6. 5.0
  7. 5.1–5.2.1
  8. 5.3–6.3
  9. 6.4
  10. 7.0
  11. 7.1
  12. 7.2
  13. 7.3
  14. 7.4
  15. 8.0
  16. 8.1
  17. 8.2
  18. 8.3
  19. 8.4
  20. 9.0
  21. 9.1
  22. 9.2
  23. 9.3
  24. 10.0
  25. 10.1
  26. 10.2
  27. 10.3
  28. 10.4
  29. 11.0
  30. 11.1
  31. 11.2
  32. 11.3
  33. 11.4
  34. 12.0
  35. 12.1
  36. 12.2
  37. 12.3
  38. 12.4
  39. 13.0–13.2
  40. 13.3–16.0

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.