summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2010-04-03 19:07:05 +0000
committeralc <alc@FreeBSD.org>2010-04-03 19:07:05 +0000
commit7530e331f2073e0ef9872e64aef08abe3cfa0df8 (patch)
treed0f84b79872a1aa6f2a3e8381d9c98f65f45c3fb
parentb149db7dce4eced6e15a170a0225ceb65ac6733e (diff)
downloadFreeBSD-src-7530e331f2073e0ef9872e64aef08abe3cfa0df8.zip
FreeBSD-src-7530e331f2073e0ef9872e64aef08abe3cfa0df8.tar.gz
Make _vm_map_init() the one place where the vm map's pmap field is
initialized. Reviewed by: kib
-rw-r--r--sys/kern/init_main.c5
-rw-r--r--sys/vm/vm_map.c18
-rw-r--r--sys/vm/vm_map.h2
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 *);
OpenPOWER on IntegriCloud