void KernelMain() { EarlyConsoleInit(); ArchInit(); ThrEarlyInit(); TimeInit(); ShutdownInit(); /* Set up the device-related subsystems. */ IcInit(); /* Once we've set up the ICFS framework, there are several * areas of Whitix (like the slab code) that need to expose * their internal information. */ SlabInfoInit(); ModuleInfoInit(); ThrInit(); VfsInit(); DevFsInit(); DeviceInit(); MiscInit(); LoadInit(); StartInit(); /* This is where the idle thread idles, after returning from StartInit in startup.c */ ThrIdleFunc(); }
void KernelMain(void) { void *text; ArchInit(); MemInit(); ProcInit(); MemMapRange(0, 0, (void*) 0x00100000, 0); KeMapPhysicalRange(0x00000000, 0x00001000, false); KeMapPhysicalRange(0x00001000, 0x000A0000, false); KeMapPhysicalRange(0x000A0000, 0x000B8000, false); text = KeMapPhysicalRange(0x000B8000, 0x000C0000, false); KeMapPhysicalRange(0x000C0000, 0x00100000, false); VmmShare(text, L"_fb_text"); enable(); ScEnableSwitch(true); ThrCreateThread(&proc_idle, true, KeStartupThread, false, NULL, 16, L"KeStartupThread"); for (;;) ArchProcessorIdle(); }