* 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 load_module(const char *path, module_info ***_modules);
|
||||||
|
|
||||||
extern status_t module_init(struct kernel_args *args);
|
extern status_t module_init(struct kernel_args *args);
|
||||||
|
extern status_t module_init_post_threads(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#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.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
||||||
@@ -129,6 +129,12 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
|
|||||||
boot_item_init();
|
boot_item_init();
|
||||||
driver_settings_init(&sKernelArgs);
|
driver_settings_init(&sKernelArgs);
|
||||||
debug_init_post_vm(&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);
|
int_init_post_vm(&sKernelArgs);
|
||||||
cpu_init_post_vm(&sKernelArgs);
|
cpu_init_post_vm(&sKernelArgs);
|
||||||
commpage_init();
|
commpage_init();
|
||||||
@@ -154,8 +160,6 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
|
|||||||
smp_init_post_generic_syscalls();
|
smp_init_post_generic_syscalls();
|
||||||
TRACE("init cbuf\n");
|
TRACE("init cbuf\n");
|
||||||
cbuf_init();
|
cbuf_init();
|
||||||
TRACE("init teams\n");
|
|
||||||
team_init(&sKernelArgs);
|
|
||||||
TRACE("init threads\n");
|
TRACE("init threads\n");
|
||||||
thread_init(&sKernelArgs);
|
thread_init(&sKernelArgs);
|
||||||
TRACE("init ports\n");
|
TRACE("init ports\n");
|
||||||
@@ -163,15 +167,13 @@ _start(kernel_args *bootKernelArgs, int currentCPU)
|
|||||||
TRACE("init kernel daemons\n");
|
TRACE("init kernel daemons\n");
|
||||||
kernel_daemon_init();
|
kernel_daemon_init();
|
||||||
arch_platform_init_post_thread(&sKernelArgs);
|
arch_platform_init_post_thread(&sKernelArgs);
|
||||||
TRACE("init posix semaphores\n");
|
TRACE("init POSIX semaphores\n");
|
||||||
realtime_sem_init();
|
realtime_sem_init();
|
||||||
xsi_ipc_init();
|
xsi_ipc_init();
|
||||||
|
|
||||||
TRACE("init VM threads\n");
|
TRACE("init VM threads\n");
|
||||||
vm_init_post_thread(&sKernelArgs);
|
vm_init_post_thread(&sKernelArgs);
|
||||||
low_resource_manager_init_post_thread();
|
low_resource_manager_init_post_thread();
|
||||||
TRACE("init ELF loader\n");
|
|
||||||
elf_init(&sKernelArgs);
|
|
||||||
TRACE("init scheduler\n");
|
TRACE("init scheduler\n");
|
||||||
scheduler_init();
|
scheduler_init();
|
||||||
TRACE("init notification services\n");
|
TRACE("init notification services\n");
|
||||||
@@ -245,7 +247,7 @@ main2(void *unused)
|
|||||||
|
|
||||||
TRACE("Init modules\n");
|
TRACE("Init modules\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_1_INIT_MODULES);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_1_INIT_MODULES);
|
||||||
module_init(&sKernelArgs);
|
module_init_post_threads();
|
||||||
|
|
||||||
// init userland debugging
|
// init userland debugging
|
||||||
TRACE("Init Userland debugging\n");
|
TRACE("Init Userland debugging\n");
|
||||||
|
|||||||
@@ -1815,10 +1815,6 @@ module_init(kernel_args* args)
|
|||||||
|
|
||||||
new(&sModuleNotificationService) ModuleNotificationService();
|
new(&sModuleNotificationService) ModuleNotificationService();
|
||||||
|
|
||||||
register_kernel_daemon(&ModuleNotificationService::HandleNotifications,
|
|
||||||
NULL, 10);
|
|
||||||
// once every second
|
|
||||||
|
|
||||||
sDisableUserAddOns = get_safemode_boolean(B_SAFEMODE_DISABLE_USER_ADD_ONS,
|
sDisableUserAddOns = get_safemode_boolean(B_SAFEMODE_DISABLE_USER_ADD_ONS,
|
||||||
false);
|
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)
|
// #pragma mark - Exported Kernel API (public part)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user