svn commit: r206142 - in head/sys: kern vm

Alan Cox alc at FreeBSD.org
Sat Apr 3 19:07:06 UTC 2010


Author: alc
Date: Sat Apr  3 19:07:05 2010
New Revision: 206142
URL: http://svn.freebsd.org/changeset/base/206142

Log:
  Make _vm_map_init() the one place where the vm map's pmap field is
  initialized.
  
  Reviewed by:	kib

Modified:
  head/sys/kern/init_main.c
  head/sys/vm/vm_map.c
  head/sys/vm/vm_map.h

Modified: head/sys/kern/init_main.c
==============================================================================
--- head/sys/kern/init_main.c	Sat Apr  3 17:22:28 2010	(r206141)
+++ head/sys/kern/init_main.c	Sat Apr  3 19:07:05 2010	(r206142)
@@ -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

Modified: head/sys/vm/vm_map.c
==============================================================================
--- head/sys/vm/vm_map.c	Sat Apr  3 17:22:28 2010	(r206141)
+++ head/sys/vm/vm_map.c	Sat Apr  3 19:07:05 2010	(r206142)
@@ -126,7 +126,8 @@ static int vmspace_zinit(void *mem, int 
 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 m
 
 	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 m
 }
 
 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");
 }

Modified: head/sys/vm/vm_map.h
==============================================================================
--- head/sys/vm/vm_map.h	Sat Apr  3 17:22:28 2010	(r206141)
+++ head/sys/vm/vm_map.h	Sat Apr  3 19:07:05 2010	(r206142)
@@ -346,7 +346,7 @@ int vm_map_fixed(vm_map_t, vm_object_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 *);


More information about the svn-src-all mailing list