Exemple #1
0
        /// <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();
        }
Exemple #2
0
 /// <summary>
 /// Sets the operational stage reported by the kernel.
 /// </summary>
 public unsafe static void SetKernelStage(KernelStage stage)
 {
     kernelStage = stage;
 }