X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/1fe5f5eb5378a47bf0f3451762743c162e40faad..7b8a1bcad75628f9add4590db2bb9b8e418ee8eb:/lunaix-os/kernel/boot_helper.c diff --git a/lunaix-os/kernel/boot_helper.c b/lunaix-os/kernel/boot_helper.c index fa87bff..d50e471 100644 --- a/lunaix-os/kernel/boot_helper.c +++ b/lunaix-os/kernel/boot_helper.c @@ -4,6 +4,7 @@ #include #include #include +#include #include /** @@ -32,6 +33,15 @@ boot_begin(struct boot_handoff* bhctx) vmm_set_mapping(VMS_SELF, pa, pa, PG_PREM_RW, VMAP_IGNORE); } } + + /* Reserve region for all loaded modules */ + for (size_t i = 0; i < bhctx->mods.mods_num; i++) { + struct boot_modent* mod = &bhctx->mods.entries[i]; + pmm_mark_chunk_occupied(KERNEL_PID, + PN(mod->start), + CEIL(mod->end - mod->start, PG_SIZE_BITS), + PP_FGLOCKED); + } } extern u8_t __kexec_boot_end; /* link/linker.ld */ @@ -79,4 +89,13 @@ boot_cleanup() vmm_del_mapping(VMS_SELF, (ptr_t)i); pmm_free_page(KERNEL_PID, (ptr_t)i); } +} + +void +boot_parse_cmdline(struct boot_handoff* bhctx) { + if (!bhctx->kexec.len) { + return; + } + + kcmd_parse_cmdline(bhctx->kexec.cmdline); } \ No newline at end of file