#include "loader/init_loader.h" #include "boot/boot_info.h" #include "debug/debug.h" #include "loader/elf_loader.h" #include "scheduler/process.h" #include "scheduler/scheduler.h" namespace { const limine_file& GetInitProgram() { const limine_module_response& resp = boot::GetModules(); dbgln("Dumping modules"); for (uint64_t i = 0; i < resp.module_count; i++) { const limine_file& file = *resp.modules[i]; dbgln("%s,%m,%x", file.path, file.address, file.size); // TODO eventually compare this file path. return file; } panic("No init program found"); } } // namespace void LoadInitProgram() { const limine_file& init_prog = GetInitProgram(); sched::InsertProcess( new Process(reinterpret_cast(init_prog.address))); }