/// <summary> /// Induce a kernel panic. Prints the meessage, stage, and error code /// then halts the computer. /// <summary> public unsafe static void Panic(string msg, KernelStage stage, KernelError code) { TextMode.Write("Panic: "); TextMode.WriteLine(msg); #if false PString8 *buf = PString8.Wrap(intermediateStringBuffer, MaxMessageLength); buf->Concat("Stage: "); buf->Concat((int)stage, false); buf->ConcatLine(); buf->Concat(" Error: "); buf->Concat((int)code, false); buf->ConcatLine(); TextMode.SaveAttributes(); SetErrorTextAttributes(); TextMode.ClearScreen(); TextMode.WriteLine("SharpOS"); TextMode.WriteLine("Kernel Panic. Your system was halted to ensure your security."); TextMode.Write(" Stage: "); TextMode.Write((int)stage, false); TextMode.WriteLine(); TextMode.Write(" Error: "); TextMode.Write((int)code, false); TextMode.WriteLine(); TextMode.WriteLine(); TextMode.WriteLine(" , "); TextMode.WriteLine(" |\\ /\\/ \\/| ,_"); TextMode.WriteLine(" ; \\/` '; , \\_',"); TextMode.WriteLine(" \\ / "); TextMode.WriteLine(" '. .' /`."); TextMode.WriteLine(" jgs `~~` , /\\ `\"`"); TextMode.WriteLine(" . `\""); TextMode.WriteLine(); TextMode.WriteLine("The SharpOS Project would appreciate your feedback on this bug."); TextMode.RestoreAttributes(); #endif EntryModule.Halt(); }
/// <summary> /// Sets the operational stage reported by the kernel. /// </summary> public unsafe static void SetKernelStage(KernelStage stage) { kernelStage = stage; }