X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7c7b5f05d39b7739d990f71256a2267ec67a6913..8c06c883e7b13c115d5ff207f79d4b68fccd5ad6:/lunaix-os/kernel/kinit.c diff --git a/lunaix-os/kernel/kinit.c b/lunaix-os/kernel/kinit.c index 6b6e5e4..0510c0c 100644 --- a/lunaix-os/kernel/kinit.c +++ b/lunaix-os/kernel/kinit.c @@ -20,13 +20,12 @@ #include #include -#include #include #include #include -#include +#include #include extern void @@ -53,6 +52,8 @@ kernel_bootstrap(struct boot_handoff* bhctx) /* Prepare stack trace environment */ trace_modksyms_init(bhctx); + device_scan_drivers(); + // crt tty_init(ioremap(0xB8000, PG_SIZE)); tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_BLACK); @@ -61,22 +62,35 @@ kernel_bootstrap(struct boot_handoff* bhctx) /* Get platform configuration */ acpi_init(); + /* Get intc online, this is the cornerstone when initing devices */ + intc_init(); + + /* + TODO autoload these init function that do not have dependency between + them + */ + /* Let's get fs online as soon as possible, as things rely on them */ vfs_init(); fsm_init(); input_init(); + block_init(); + sched_init(); - /* Get intc online, this is the cornerstone when initing devices */ - intc_init(); + device_earlystage(); /* System timing and clock support */ - clock_init(); - timer_init(); + /* + FIXME we must get timer as earlier as possible - block_init(); + A decoupling between rtc and general device sub-sys is needed. + Otherwise we timer can only be loaded after device_earlystage. + + We need a dedicated timer&clock subsystem + */ + timer_init(); /* the bare metal are now happy, let's get software over with */ - sched_init(); int errno = 0; if ((errno = vfs_mount_root("ramfs", NULL))) { @@ -88,9 +102,6 @@ kernel_bootstrap(struct boot_handoff* bhctx) vfs_mount("/sys", "twifs", NULL, MNT_RO); vfs_mount("/task", "taskfs", NULL, MNT_RO); - lxconsole_spawn_ttydev(); - device_init_builtin(); - /* Finish up bootstrapping sequence, we are ready to spawn the root process * and start geting into uspace */