public static SetInterruptHandler ( InterruptHandler interruptHandler ) : void | ||
interruptHandler | InterruptHandler | |
리턴 | void |
public static void Setup() { // Initialize GDT before IDT, because IDT Entries requires a valid Segment Selector Multiboot.Setup(); GDT.Setup(); // At this stage, allocating memory does not work, so you are only allowed to use ValueTypes or static classes. IDT.SetInterruptHandler(null); Panic.Setup(); // Initialize interrupts PIC.Setup(); IDT.Setup(); // Initializing the memory management PageFrameAllocator.Setup(); PageTable.Setup(); VirtualPageAllocator.Setup(); GC.Setup(); // At this point we can use objects Scheduler.Setup(); SmbiosManager.Setup(); ConsoleManager.Setup(); Logger.Log("Kernel initialized"); }
public static void Setup() { // At this stage, allocating memory does not work, so you are only allowed to use ValueTypes or static classes. IDT.SetInterruptHandler(null); Panic.Setup(); Debugger.Setup(Serial.COM1); // Initialize interrupts PIC.Setup(); IDT.Setup(); // Initializing the memory management Multiboot.Setup(); GDT.Setup(); PageFrameAllocator.Setup(); PageTable.Setup(); VirtualPageAllocator.Setup(); GC.Setup(); // At this point we can use objects Scheduler.Setup(); SmbiosManager.Setup(); ConsoleManager.Setup(); Internal.Setup(); }
public static void Setup() { // Initialize GDT before IDT, because IDT Entries requies a valid Segment Selector // This never happend before, because on fast computers GDT.Setup() was called // before a Interrupt,for example clock, got triggered. Multiboot.Setup(); GDT.Setup(); // At this stage, allocating memory does not work, so you are only allowed to use ValueTypes or static classes. IDT.SetInterruptHandler(null); Panic.Setup(); Debugger.Setup(Serial.COM1); // Initialize interrupts PIC.Setup(); IDT.Setup(); // Initializing the memory management PageFrameAllocator.Setup(); PageTable.Setup(); VirtualPageAllocator.Setup(); GC.Setup(); // At this point we can use objects Scheduler.Setup(); SmbiosManager.Setup(); ConsoleManager.Setup(); Internal.Setup(); }
public static void Error(string message) { IDT.SetInterruptHandler(null); Screen.BackgroundColor = Color.Blue; Screen.Clear(); Screen.Goto(1, 0); Screen.Color = Color.White; Screen.Write("*** Kernel Panic ***"); if (firstError) { firstError = false; } else { Screen.Write(" (multiple)"); } Screen.NextLine(); Screen.NextLine(); Screen.Write(message); Screen.NextLine(); Screen.NextLine(); Screen.Write("REGISTERS:"); Screen.NextLine(); Screen.NextLine(); DumpRegisters(); Screen.NextLine(); Screen.Write("STACK TRACE:"); Screen.NextLine(); Screen.NextLine(); DumpStackTrace(); while (true) { // keep debugger running unsafe { Debugger.Process(null); } //Native.Hlt(); } }
private static void PrepareScreen(string title) { IDT.SetInterruptHandler(null); Screen.BackgroundColor = Colors.Black; Screen.Clear(); Screen.Goto(1, 1); Screen.Color = Colors.LightGray; Screen.Write("*** "); Screen.Write(title); if (firstError) { firstError = false; } else { Screen.Write(" (multiple)"); } Screen.Write(" ***"); Screen.Goto(3, 1); }