vm_map_fixed(), unlike vm_map_find(), does not update "addr", so it can be

passed by value.
This commit is contained in:
Alan Cox 2008-04-28 05:30:23 +00:00
parent 01d8aa0d31
commit b8ca4ef2e3
3 changed files with 5 additions and 5 deletions

View file

@ -1172,13 +1172,12 @@ found:
int
vm_map_fixed(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
vm_offset_t *addr /* IN/OUT */, vm_size_t length, vm_prot_t prot,
vm_offset_t start, vm_size_t length, vm_prot_t prot,
vm_prot_t max, int cow)
{
vm_offset_t start, end;
vm_offset_t end;
int result;
start = *addr;
vm_map_lock(map);
end = start + length;
VM_MAP_RANGE_CHECK(map, start, end);

View file

@ -338,7 +338,8 @@ boolean_t vm_map_check_protection (vm_map_t, vm_offset_t, vm_offset_t, vm_prot_t
vm_map_t vm_map_create(pmap_t, vm_offset_t, vm_offset_t);
int vm_map_delete (vm_map_t, vm_offset_t, vm_offset_t);
int vm_map_find (vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t *, vm_size_t, boolean_t, vm_prot_t, vm_prot_t, int);
int vm_map_fixed (vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int);
int vm_map_fixed(vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t, vm_size_t,
vm_prot_t, vm_prot_t, int);
int vm_map_findspace (vm_map_t, vm_offset_t, vm_size_t, vm_offset_t *);
int vm_map_inherit (vm_map_t, vm_offset_t, vm_offset_t, vm_inherit_t);
void vm_map_init (struct vm_map *, vm_offset_t, vm_offset_t);

View file

@ -1466,7 +1466,7 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
rv = vm_map_find(map, object, foff, addr, size, TRUE,
prot, maxprot, docow);
else
rv = vm_map_fixed(map, object, foff, addr, size,
rv = vm_map_fixed(map, object, foff, *addr, size,
prot, maxprot, docow);
if (rv != KERN_SUCCESS) {