* Shuffled initializers around: the team, ELF, and module initializers come

now a lot earlier.
* That makes it now possible to use modules pretty early in the kernel (like
  before timer_init(), or int_init_post_vm()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26790 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-08-04 13:26:13 +00:00
parent cc0b310748
commit 423fcd43ae
3 changed files with 21 additions and 11 deletions
+1
View File
@@ -30,6 +30,7 @@ extern status_t unload_module(const char *path);
extern status_t load_module(const char *path, module_info ***_modules);
extern status_t module_init(struct kernel_args *args);
extern status_t module_init_post_threads(void);
#ifdef __cplusplus
}
+9 -7
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2008, Axel Dörfler, [email protected]. All rights reserved.
* Copyright 2002-2008, Axel Dörfler, [email protected].
* Distributed under the terms of the MIT License.
*
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
@@ -129,6 +129,12 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
boot_item_init();
driver_settings_init(&sKernelArgs);
debug_init_post_vm(&sKernelArgs);
TRACE("init teams\n");
team_init(&sKernelArgs);
TRACE("init ELF loader\n");
elf_init(&sKernelArgs);
TRACE("init modules\n");
module_init(&sKernelArgs);
int_init_post_vm(&sKernelArgs);
cpu_init_post_vm(&sKernelArgs);
commpage_init();
@@ -154,8 +160,6 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
smp_init_post_generic_syscalls();
TRACE("init cbuf\n");
cbuf_init();
TRACE("init teams\n");
team_init(&sKernelArgs);
TRACE("init threads\n");
thread_init(&sKernelArgs);
TRACE("init ports\n");
@@ -163,15 +167,13 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
TRACE("init kernel daemons\n");
kernel_daemon_init();
arch_platform_init_post_thread(&sKernelArgs);
TRACE("init posix semaphores\n");
TRACE("init POSIX semaphores\n");
realtime_sem_init();
xsi_ipc_init();
TRACE("init VM threads\n");
vm_init_post_thread(&sKernelArgs);
low_resource_manager_init_post_thread();
TRACE("init ELF loader\n");
elf_init(&sKernelArgs);
TRACE("init scheduler\n");
scheduler_init();
TRACE("init notification services\n");
@@ -245,7 +247,7 @@ main2(void *unused)
TRACE("Init modules\n");
boot_splash_set_stage(BOOT_SPLASH_STAGE_1_INIT_MODULES);
module_init(&sKernelArgs);
module_init_post_threads();
// init userland debugging
TRACE("Init Userland debugging\n");
+11 -4
View File
@@ -1815,10 +1815,6 @@ module_init(kernel_args* args)
new(&sModuleNotificationService) ModuleNotificationService();
register_kernel_daemon(&ModuleNotificationService::HandleNotifications,
NULL, 10);
// once every second
sDisableUserAddOns = get_safemode_boolean(B_SAFEMODE_DISABLE_USER_ADD_ONS,
false);
@@ -1829,6 +1825,17 @@ module_init(kernel_args* args)
}
status_t
module_init_post_threads(void)
{
return register_kernel_daemon(
&ModuleNotificationService::HandleNotifications, NULL, 10);
// once every second
return B_OK;
}
// #pragma mark - Exported Kernel API (public part)