DESCRIPTION

The vm_map_wire() function is responsible for wiring pages in the range
between start and end within the map map. Wired pages are locked into
physical memory, and may not be paged out as long as their wire count
remains above zero.
The vm_map_unwire() function performs the corresponding unwire operation.
The flags argument is a bit mask, consisting of the following flags:
If the VM_MAP_WIRE_USER flag is set, the function operates within user
address space.
If the VM_MAP_WIRE_HOLESOK flag is set, it may operate upon an arbitrary
range within the address space of map.
If a contiguous range is desired, callers should explicitly express their
intent by specifying the VM_MAP_WIRE_NOHOLES flag.

IMPLEMENTATIONNOTES

Both functions will attempt to acquire a lock on the map using
vm_map_lock(9) and hold it for the duration of the call. If they detect
MAP_ENTRY_IN_TRANSITION, they will call vm_map_unlock_and_wait(9) until
the map becomes available again.
The map could have changed during this window as it was held by another
consumer, therefore consumers of this interface should check for this
condition using the return values below.

RETURNVALUES

The vm_map_wire() and vm_map_unwire() functions have identical return
values. The functions return KERN_SUCCESS if all pages within the range
were [un]wired successfully.
Otherwise, if the specified range was not valid, or if the map changed
while the MAP_ENTRY_IN_TRANSITION flag was set, KERN_INVALID_ADDRESS is
returned.