#include #include #include #include #include #include #include #include #include #include #include #include #include void kreport(void) { cpu_report(); memory_report(); acpi_report(); pci_report(); ata_report(); gpu_report(); } __attribute__((noreturn)) void main(long magic, volatile void *mboot) { // initalize idt and pic cpu_init(); // load multiboot information mboot_init(magic, mboot); // load efi structures efi_init(mboot_get_efi_hdl(), mboot_get_efi_st()); // initalize memory memory_init(); // initalize devices drivers_init(); // load file systems fs_init(); // initalize processes pcb_init(); // report system state kreport(); // load init process pcb_alloc(&init_pcb); if (user_load(init_pcb, &fs_disks[0])) panic("failed to load init"); // schedule and dispatch init schedule(init_pcb); dispatch(); }