From a69e0ac327d7ad06a22f9f3d7ee6e3ecff1fd418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 13 Jun 2005 13:01:13 +0000 Subject: [PATCH] The boot item list was not initialized; this was no problem, though, as no items can be removed from that list - nevertheless, it's wrong. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13088 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/boot_item.h | 2 ++ src/system/kernel/boot_item.cpp | 10 ++++++++++ src/system/kernel/main.c | 2 ++ 3 files changed, 14 insertions(+) diff --git a/headers/private/kernel/boot_item.h b/headers/private/kernel/boot_item.h index 4629c224f8..1dd05670df 100644 --- a/headers/private/kernel/boot_item.h +++ b/headers/private/kernel/boot_item.h @@ -12,6 +12,8 @@ extern "C" { #endif +extern status_t boot_item_init(void); + extern status_t add_boot_item(const char *name, void *data, size_t size); extern void *get_boot_item(const char *name); diff --git a/src/system/kernel/boot_item.cpp b/src/system/kernel/boot_item.cpp index 29b6ffa34d..d4a829969d 100644 --- a/src/system/kernel/boot_item.cpp +++ b/src/system/kernel/boot_item.cpp @@ -60,3 +60,13 @@ get_boot_item(const char *name) return NULL; } + +status_t +boot_item_init(void) +{ + new(&sItemList) ItemList; + // static initializers do not work in the kernel, + // so we have to do it here, manually + + return B_OK; +} diff --git a/src/system/kernel/main.c b/src/system/kernel/main.c index 458d7a71b5..df7256b876 100644 --- a/src/system/kernel/main.c +++ b/src/system/kernel/main.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -100,6 +101,7 @@ _start(kernel_args *oldka, int cpu_num) // now we can use the heap and create areas TRACE(("init driver_settings\n")); + boot_item_init(); driver_settings_init(&ka); debug_init_post_vm(&ka); int_init_post_vm(&ka);