From 25c4f39f68729847fbc1b797be248b8519ab145d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 23 Oct 2004 13:52:42 +0000 Subject: [PATCH] Implemented vm_free_kernel_args() which frees all arguments from the kernel_args arguments list (but not the structure itself). Now calls heap_init_post_thread(), heap_init_post_sem() was called ..._postsem() before. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9457 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/vm/vm.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/kernel/core/vm/vm.c b/src/kernel/core/vm/vm.c index db9983847a..3ec923021d 100755 --- a/src/kernel/core/vm/vm.c +++ b/src/kernel/core/vm/vm.c @@ -1862,7 +1862,25 @@ create_preloaded_image_areas(struct preloaded_image *image) } -// ToDo: have a vm_free_kernel_args() called! +/** Frees all previously kernel arguments areas from the kernel_args structure. + * Any boot loader resources contained in that arguments must not be accessed + * anymore past this point. + */ + +void +vm_free_kernel_args(kernel_args *args) +{ + uint32 i; + + TRACE(("vm_free_kernel_args()\n")); + + for (i = 0; i < args->num_kernel_args_ranges; i++) { + area_id area = area_for((void *)args->kernel_args_range[i].start); + if (area >= B_OK) + delete_area(area); + } +} + static void allocate_kernel_args(kernel_args *args) @@ -2032,7 +2050,7 @@ vm_init_post_sem(kernel_args *args) region_hash_sem = create_sem(WRITE_COUNT, "region_hash_sem"); - return heap_init_postsem(args); + return heap_init_post_sem(args); } @@ -2048,7 +2066,7 @@ vm_init_post_thread(kernel_args *args) vm_daemon_init(); - return 0; + return heap_init_post_thread(args); }