* 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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user