diff options
-rw-r--r-- | sys/kern/init_main.c | 5 | ||||
-rw-r--r-- | sys/vm/vm_map.c | 18 | ||||
-rw-r--r-- | sys/vm/vm_map.h | 2 |
3 files changed, 12 insertions, 13 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index f1508c8..4499679 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -510,9 +510,8 @@ proc0_init(void *dummy __unused) * proc0 is not expected to enter usermode, so there is no special * handling for sv_minuser here, like is done for exec_new_vmspace(). */ - vm_map_init(&vmspace0.vm_map, p->p_sysent->sv_minuser, - p->p_sysent->sv_maxuser); - vmspace0.vm_map.pmap = vmspace_pmap(&vmspace0); + vm_map_init(&vmspace0.vm_map, vmspace_pmap(&vmspace0), + p->p_sysent->sv_minuser, p->p_sysent->sv_maxuser); /*- * call the init and ctor for the new thread and proc diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 1235ec0..fe0c0f5 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -126,7 +126,8 @@ static int vmspace_zinit(void *mem, int size, int flags); static void vmspace_zfini(void *mem, int size); static int vm_map_zinit(void *mem, int ize, int flags); static void vm_map_zfini(void *mem, int size); -static void _vm_map_init(vm_map_t map, vm_offset_t min, vm_offset_t max); +static void _vm_map_init(vm_map_t map, pmap_t pmap, vm_offset_t min, + vm_offset_t max); static void vm_map_entry_dispose(vm_map_t map, vm_map_entry_t entry); #ifdef INVARIANTS static void vm_map_zdtor(void *mem, int size, void *arg); @@ -281,8 +282,7 @@ vmspace_alloc(min, max) return (NULL); } CTR1(KTR_VM, "vmspace_alloc: %p", vm); - _vm_map_init(&vm->vm_map, min, max); - vm->vm_map.pmap = vmspace_pmap(vm); /* XXX */ + _vm_map_init(&vm->vm_map, vmspace_pmap(vm), min, max); vm->vm_refcnt = 1; vm->vm_shm = NULL; vm->vm_swrss = 0; @@ -678,23 +678,22 @@ vm_map_create(pmap_t pmap, vm_offset_t min, vm_offset_t max) result = uma_zalloc(mapzone, M_WAITOK); CTR1(KTR_VM, "vm_map_create: %p", result); - _vm_map_init(result, min, max); - result->pmap = pmap; + _vm_map_init(result, pmap, min, max); return (result); } /* * Initialize an existing vm_map structure * such as that in the vmspace structure. - * The pmap is set elsewhere. */ static void -_vm_map_init(vm_map_t map, vm_offset_t min, vm_offset_t max) +_vm_map_init(vm_map_t map, pmap_t pmap, vm_offset_t min, vm_offset_t max) { map->header.next = map->header.prev = &map->header; map->needs_wakeup = FALSE; map->system_map = 0; + map->pmap = pmap; map->min_offset = min; map->max_offset = max; map->flags = 0; @@ -704,9 +703,10 @@ _vm_map_init(vm_map_t map, vm_offset_t min, vm_offset_t max) } void -vm_map_init(vm_map_t map, vm_offset_t min, vm_offset_t max) +vm_map_init(vm_map_t map, pmap_t pmap, vm_offset_t min, vm_offset_t max) { - _vm_map_init(map, min, max); + + _vm_map_init(map, pmap, min, max); mtx_init(&map->system_mtx, "system map", NULL, MTX_DEF | MTX_DUPOK); sx_init(&map->lock, "user map"); } diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h index 9630845..5454ce6 100644 --- a/sys/vm/vm_map.h +++ b/sys/vm/vm_map.h @@ -346,7 +346,7 @@ 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); +void vm_map_init(vm_map_t, pmap_t, vm_offset_t, vm_offset_t); int vm_map_insert (vm_map_t, vm_object_t, vm_ooffset_t, vm_offset_t, vm_offset_t, vm_prot_t, vm_prot_t, int); int vm_map_lookup (vm_map_t *, vm_offset_t, vm_prot_t, vm_map_entry_t *, vm_object_t *, vm_pindex_t *, vm_prot_t *, boolean_t *); |