Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_map.c
Show First 20 Lines • Show All 4,253 Lines • ▼ Show 20 Lines | vm2 = vmspace_alloc(vm_map_min(old_map), vm_map_max(old_map), | ||||
pmap_pinit); | pmap_pinit); | ||||
if (vm2 == NULL) | if (vm2 == NULL) | ||||
return (NULL); | return (NULL); | ||||
vm2->vm_taddr = vm1->vm_taddr; | vm2->vm_taddr = vm1->vm_taddr; | ||||
vm2->vm_daddr = vm1->vm_daddr; | vm2->vm_daddr = vm1->vm_daddr; | ||||
vm2->vm_maxsaddr = vm1->vm_maxsaddr; | vm2->vm_maxsaddr = vm1->vm_maxsaddr; | ||||
vm2->vm_stacktop = vm1->vm_stacktop; | vm2->vm_stacktop = vm1->vm_stacktop; | ||||
vm2->vm_shp_base = vm1->vm_shp_base; | |||||
vm_map_lock(old_map); | vm_map_lock(old_map); | ||||
if (old_map->busy) | if (old_map->busy) | ||||
vm_map_wait_busy(old_map); | vm_map_wait_busy(old_map); | ||||
new_map = &vm2->vm_map; | new_map = &vm2->vm_map; | ||||
locked = vm_map_trylock(new_map); /* trylock to silence WITNESS */ | locked = vm_map_trylock(new_map); /* trylock to silence WITNESS */ | ||||
KASSERT(locked, ("vmspace_fork: lock failed")); | KASSERT(locked, ("vmspace_fork: lock failed")); | ||||
error = pmap_vmspace_copy(new_map->pmap, old_map->pmap); | error = pmap_vmspace_copy(new_map->pmap, old_map->pmap); | ||||
▲ Show 20 Lines • Show All 1,096 Lines • Show Last 20 Lines |