summaryrefslogtreecommitdiff
path: root/vm/vm_map.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2012-12-24 12:03:20 +0100
committerRichard Braun <rbraun@sceen.net>2012-12-24 12:03:20 +0100
commit254dee50b40b0dc7715c3dde6b01b2a3b80d6c97 (patch)
treed61bee61fd70f28a94bce401cfe5eb9d27f22e51 /vm/vm_map.c
parent9b1b345549cd79e6a18be48d06fff18aed3d958f (diff)
vm/vm_map: create pmap for new VM maps
Diffstat (limited to 'vm/vm_map.c')
-rw-r--r--vm/vm_map.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/vm/vm_map.c b/vm/vm_map.c
index 1ff052fc..20e78934 100644
--- a/vm/vm_map.c
+++ b/vm/vm_map.c
@@ -944,16 +944,29 @@ int
vm_map_create(struct vm_map **mapp)
{
struct vm_map *map;
+ struct pmap *pmap;
+ int error;
map = kmem_cache_alloc(&vm_map_cache);
- if (map == NULL)
- return ERROR_NOMEM;
+ if (map == NULL) {
+ error = ERROR_NOMEM;
+ goto error_map;
+ }
+
+ error = pmap_create(&pmap);
- /* TODO Create pmap */
- vm_map_init(map, NULL, VM_MIN_ADDRESS, VM_MAX_ADDRESS);
+ if (error)
+ goto error_pmap;
+
+ vm_map_init(map, pmap, VM_MIN_ADDRESS, VM_MAX_ADDRESS);
*mapp = map;
return 0;
+
+error_pmap:
+ kmem_cache_free(&vm_map_cache, map);
+error_map:
+ return error;
}
void