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);