The vm_map_insert function inserts a mapping for the entire vm_object object into the target map map.
The offset argument specifies the offset into the object at which to begin mapping. The objects size should match that of the specified address range.
The start and end arguments specify the bounds of the mapped objects window in the address space of map.
The cow argument specifies the flags which should be propagated to the new entry, for example, to indicate that this is a copy-on-write mapping.
This function implicitly creates a new
.Vt vm_map_entry by calling the internal function vm_map_entry_create. This function may use the Giant lock to ensure that only a single thread is present in the function.
The vm_map_insert function returns KERN_SUCCESS if the mapping could be made successfully.
Otherwise, KERN_INVALID_ADDRESS will be returned if the start of the range could not be found, or KERN_NO_SPACE if the range was found to be part of an existing entry or if it overlaps the end of the map.