From efafcaf363ae930330e41db1fd6f5f027e693260 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Tue, 18 Dec 2012 21:41:52 +0100 Subject: kern/task: create VM map for new tasks --- kern/task.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'kern/task.c') diff --git a/kern/task.c b/kern/task.c index 9a34f7c3..c1780a4d 100644 --- a/kern/task.c +++ b/kern/task.c @@ -25,6 +25,7 @@ #include #include #include +#include /* * Kernel task and storage. @@ -66,15 +67,23 @@ task_setup(void) int task_create(struct task **taskp, const char *name) { + struct vm_map *map; struct task *task; + int error; task = kmem_cache_alloc(&task_cache); - if (task == NULL) - return ERROR_NOMEM; + if (task == NULL) { + error = ERROR_NOMEM; + goto error_task; + } + + error = vm_map_create(&map); - /* TODO VM map */ - task_init(task, name, NULL); + if (error) + goto error_map; + + task_init(task, name, map); spinlock_lock(&task_list_lock); list_insert(&task_list, &kernel_task->node); @@ -82,6 +91,11 @@ task_create(struct task **taskp, const char *name) *taskp = task; return 0; + +error_map: + kmem_cache_free(&task_cache, task); +error_task: + return error; } void -- cgit v1.2.3