diff options
author | Richard Braun <rbraun@sceen.net> | 2012-12-24 12:03:20 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2012-12-24 12:03:20 +0100 |
commit | 254dee50b40b0dc7715c3dde6b01b2a3b80d6c97 (patch) | |
tree | d61bee61fd70f28a94bce401cfe5eb9d27f22e51 /vm/vm_map.c | |
parent | 9b1b345549cd79e6a18be48d06fff18aed3d958f (diff) |
vm/vm_map: create pmap for new VM maps
Diffstat (limited to 'vm/vm_map.c')
-rw-r--r-- | vm/vm_map.c | 21 |
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 |