From b0900ad6c3e1d7a9de2da865c50c9b8dd2ef5d7c Mon Sep 17 00:00:00 2001 From: Bahadir Balban Date: Fri, 14 Mar 2008 15:39:25 +0000 Subject: [PATCH] Forgotten to add vma to file reference in do_mmap(). This adds that. --- tasks/mm0/src/mmap.c | 1 + tasks/mm0/src/pagers.c | 2 +- tasks/mm0/src/task.c | 23 +++++++++++++++-------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tasks/mm0/src/mmap.c b/tasks/mm0/src/mmap.c index c4c61d4..b6e9217 100644 --- a/tasks/mm0/src/mmap.c +++ b/tasks/mm0/src/mmap.c @@ -473,6 +473,7 @@ int mmap_address_validate(unsigned long map_address, unsigned int vm_flags) } else BUG(); } + /* * Maps the given file with given flags at the given page offset to the given * task's address space at the specified virtual memory address and length. diff --git a/tasks/mm0/src/pagers.c b/tasks/mm0/src/pagers.c index d9b52b7..931f87c 100644 --- a/tasks/mm0/src/pagers.c +++ b/tasks/mm0/src/pagers.c @@ -232,7 +232,7 @@ int init_boot_files(struct initdata *initdata) list_add(&boot_file->vm_obj.list, &vm_object_list); /* Add the file to initdata's bootfile list */ - list_add(&boot_file->list, &initdata->boot_file_list); + list_add_tail(&boot_file->list, &initdata->boot_file_list); } return 0; } diff --git a/tasks/mm0/src/task.c b/tasks/mm0/src/task.c index cbdc78e..339210c 100644 --- a/tasks/mm0/src/task.c +++ b/tasks/mm0/src/task.c @@ -307,31 +307,38 @@ error: BUG(); } +struct vm_file *initdata_next_bootfile(struct initdata *initdata) +{ + struct vm_file *file, *n; + list_for_each_entry_safe(file, n, &initdata->boot_file_list, + list) { + list_del(&file->list); + return file; + } + return 0; +} + /* * Reads boot files from init data, determines their task ids if they * match with particular servers, and starts the tasks. */ int start_boot_tasks(struct initdata *initdata) { - struct vm_file *file, *n; + struct vm_file *file; struct svc_image *img; struct task_ids ids; int total = 0; INIT_LIST_HEAD(&tcb_head.list); do { - file = 0; - list_for_each_entry_safe(file, n, &initdata->boot_file_list, - list) { - list_del(&file->list); - break; - } + file = initdata_next_bootfile(initdata); if (file) { BUG_ON(file->type != VM_FILE_BOOTFILE); img = file->priv_data; - if (!strcmp(img->name, __PAGERNAME__)) + if (!strcmp(img->name, __PAGERNAME__)) { continue; + } /* Set up task ids */ if (!strcmp(img->name, __VFSNAME__)) { ids.tid = VFS_TID;