vm_page_grab(9)

vm_page_grab9

Returns a page from an object

Usage

#include <sys/param.h>

#include <vm/vm.h>

#include <vm/vm_page.h>

vm_page_t

vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags);

Overview

The vm_page_grab() function returns the page at pindex from the given object. If the page exists and is busy, vm_page_grab() will sleep while waiting for it. If the page does not exist, it is allocated. The function sleeps until the allocation request can be satisfied.

The function requires the object to be locked on entry, and returns with the object locked. If the vm_page_grab() function sleeps for any reason, the object lock is temporary dropped.

The vm_page_grab() supports all of the flags supported by vm_page_alloc(9). In addition, vm_page_grab() supports the following flags:

VM_ALLOC_IGN_SBUSY

When waiting for the busy state of the existing page to drain, only test for exclusive busy; ignore the shared busy counter.

Return values

The vm_page_grab() always returns the page.

Releases

56 releases since FreeBSD 5.0-RELEASE; the text changed 33 times.

  1. 5.0–5.5
  2. 6.0–6.3
  3. 6.4
  4. 7.0
  5. 7.1
  6. 7.2
  7. 7.3
  8. 7.4
  9. 8.0
  10. 8.1
  11. 8.2
  12. 8.3
  13. 8.4
  14. 9.0
  15. 9.1
  16. 9.2
  17. 9.3
  18. 10.0
  19. 10.1
  20. 10.2
  21. 10.3
  22. 10.4
  23. 11.0
  24. 11.1
  25. 11.2
  26. 11.3
  27. 11.4
  28. 12.0
  29. 12.1
  30. 12.2
  31. 12.3
  32. 12.4
  33. 13.0–13.2
  34. 13.3–16.0

Authors

This manual page was written by Chad David ⟨[email protected]⟩.

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