vm_map_find
- find a free region within a map, and optionally map a vm_object
SYNOPSIS
#include <sys/param.h>
#include <vm/vm.h>
#include <vm/vm_map.h> int
Fo vm_map_find
Fa vm_map_t map vm_object_t object vm_ooffset_t offset
Fa vm_offset_t *addr vm_size_t length boolean_t find_space
Fa vm_prot_t prot vm_prot_t max int cow
Fc
DESCRIPTION
The
vm_map_find ();
function attempts to find a free region in the target
Fa map ,
with the given
Fa length ,
and will also optionally create a mapping of
Fa object .
The arguments
Fa offset ,
Fa prot ,
Fa max ,
and
Fa cow
are passed unchanged to
vm_map_insert9
when creating the mapping, if and only if a free region is found.
If
Fa object
is
non- NULL
the reference count on the object must be incremented
by the caller before calling this function to account for the new entry.
If
Fa find_space
is
TRUE
the function will call
vm_map_findspace9
to discover a free region.
IMPLEMENTATION NOTES
This function acquires a lock on
Fa map
by calling
vm_map_lock9,
and holds it until the function returns.
The search for a free region is defined to be first-fit, from the address
Fa addr
onwards.
RETURN VALUES
The
vm_map_find ();
function returns
KERN_SUCCESS
if space for the mapping could be found and
the mapping was successfully created.
If space could not be found in the map,
KERN_NO_SPACE
will be returned.
If the discovered range turned out to be bogus,
KERN_INVALID_ADDRESS
will be returned.