Kernel: Add KString::must_{..} factory methods

There are a bunch of places like drivers which for all intense and
purposes can't really fail allocation during boot, and if they do
fail we should crash immediately.

This change adds `KString::must_create_uninitialized(..)` as well as
`KString::must_create(..)` for use during early boot initialization of
the Kernel. They enforce that they are only used during early boot.
This commit is contained in:
Brian Gianforcaro 2021-05-31 01:51:09 -07:00 committed by Ali Mohammad Pur
parent de0aa44bb6
commit d838a02e74
Notes: sideshowbarker 2024-07-18 17:08:00 +09:00
3 changed files with 27 additions and 0 deletions

View file

@ -78,6 +78,7 @@ multiboot_module_entry_t multiboot_copy_boot_modules_array[16];
size_t multiboot_copy_boot_modules_count;
extern "C" const char kernel_cmdline[4096];
bool g_in_early_boot;
namespace Kernel {
@ -111,6 +112,7 @@ extern "C" UNMAP_AFTER_INIT [[noreturn]] void init()
asm volatile("cli;hlt");
}
g_in_early_boot = true;
setup_serial_debug();
// We need to copy the command line before kmalloc is initialized,
@ -271,6 +273,9 @@ void init_stage2(void*)
// NOTE: Everything marked UNMAP_AFTER_INIT becomes inaccessible after this point.
MM.unmap_memory_after_init();
// Switch out of early boot mode.
g_in_early_boot = false;
int error;
// FIXME: It would be nicer to set the mode from userspace.