feat: cleanup init code, small other refactors
This commit is contained in:
@@ -4,18 +4,12 @@
|
||||
|
||||
#define DEBUG_INIT
|
||||
|
||||
#include <myke/acpi/acpi.h>
|
||||
#include <myke/command.h>
|
||||
#include <myke/cpu/cpuidx.h>
|
||||
#include <myke/cpu/gdt.h>
|
||||
#include <myke/cpu/isr.h>
|
||||
#include <myke/cpu/pit.h>
|
||||
#include <myke/debug/debug.h>
|
||||
#include <myke/drivers/keyboard.h>
|
||||
#include <myke/drivers/pci/pci.h>
|
||||
#include <myke/drivers/serial.h>
|
||||
#include <myke/drivers/vgascreen.h>
|
||||
#include <myke/vfs/blockdev.h>
|
||||
#include <myke/libk/kprint.h>
|
||||
#include <myke/libk/libk.h>
|
||||
#include <myke/libk/syscall.h>
|
||||
@@ -44,11 +38,8 @@ void init_pci_system() {
|
||||
void att_noreturn att_used kmain(multiboot_info_t *multiboot_info, uint32_t mb_name) {
|
||||
// early init
|
||||
isr_install();
|
||||
vga_clear_screen();
|
||||
vga_clear_screen(' ', VGA_WHITE | (VGA_GRAY << VGA_SHIFT_BG));
|
||||
kprint_register(vga_kprint);
|
||||
serial_init();
|
||||
kprint_register(serial_kprint);
|
||||
// initialize early modules (kprint etc.)
|
||||
init_execute_all(INIT_STAGE_EARLY_BOOT_0);
|
||||
|
||||
// parse multiboot
|
||||
if (mb_name != MULTIBOOT_BOOTLOADER_MAGIC) {
|
||||
@@ -59,41 +50,33 @@ void att_noreturn att_used kmain(multiboot_info_t *multiboot_info, uint32_t mb_n
|
||||
|
||||
// initialize memory management
|
||||
init_mmap(multiboot_info);
|
||||
// safe multiboot info for later use
|
||||
debug_store_info(multiboot_info);
|
||||
|
||||
gdt_init();
|
||||
|
||||
// initialize kprint functionality
|
||||
kprint_init();
|
||||
|
||||
// todo earlier in boot
|
||||
acpi_parse();
|
||||
acpi_init();
|
||||
|
||||
debug_store_info(multiboot_info);
|
||||
|
||||
// identify cpu
|
||||
cpuidx_print_info();
|
||||
// initialize early driver code (ACPI, etc.)
|
||||
init_execute_all(INIT_STAGE_EARLY_BOOT_1);
|
||||
|
||||
// enable interrupts
|
||||
__asm__ __volatile__("sti");
|
||||
// start the timer
|
||||
pit_init(1000);
|
||||
// initialize devices
|
||||
init_keyboard();
|
||||
pit_int_frequency(1000);
|
||||
|
||||
// initialize drivers that are not discovered in any other way
|
||||
init_execute_all(INIT_STAGE_LATE_BOOT);
|
||||
|
||||
// init PCI
|
||||
init_pci_system();
|
||||
|
||||
printf("Booted successfully v%d.%d.%d\n", version_major, version_minor, version_patch);
|
||||
|
||||
// initializing modules
|
||||
init_execute_all();
|
||||
|
||||
// initialize tasking
|
||||
task_init();
|
||||
kprint_start_task();
|
||||
block_dev_start_task();
|
||||
#ifdef K_SHELL
|
||||
task_spawn(main_loop, NULL, "main");
|
||||
#endif
|
||||
// let other system provide tasks (command, kprint, blockdev)
|
||||
init_execute_all(INIT_STAGE_PRE_TASKING);
|
||||
// switch to tasking
|
||||
syscall_start_scheduler();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user