mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-29 07:47:59 +00:00
Few improvements for crash screen
This commit is contained in:
parent
dc5b6498f9
commit
3112d51168
@ -2,11 +2,13 @@
|
|||||||
#include "chfcts.hpp"
|
#include "chfcts.hpp"
|
||||||
|
|
||||||
#include <display.hpp>
|
#include <display.hpp>
|
||||||
|
#include <convert.h>
|
||||||
#include <printf.h>
|
#include <printf.h>
|
||||||
#include <lock.hpp>
|
#include <lock.hpp>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <smp.hpp>
|
#include <smp.hpp>
|
||||||
#include <cpu.hpp>
|
#include <cpu.hpp>
|
||||||
|
#include <io.h>
|
||||||
|
|
||||||
#if defined(__amd64__)
|
#if defined(__amd64__)
|
||||||
#include "../../Architecture/amd64/cpu/gdt.hpp"
|
#include "../../Architecture/amd64/cpu/gdt.hpp"
|
||||||
@ -36,6 +38,20 @@ namespace CrashHandler
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__no_stack_protector char *trimwhitespace(char *str)
|
||||||
|
{
|
||||||
|
char *end;
|
||||||
|
while (*str == ' ')
|
||||||
|
str++;
|
||||||
|
if (*str == 0)
|
||||||
|
return str;
|
||||||
|
end = str + strlen(str) - 1;
|
||||||
|
while (end > str && *end == ' ')
|
||||||
|
end--;
|
||||||
|
*(end + 1) = 0;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
CRData crashdata = {};
|
CRData crashdata = {};
|
||||||
|
|
||||||
__no_stack_protector void DisplayTopOverlay()
|
__no_stack_protector void DisplayTopOverlay()
|
||||||
@ -186,7 +202,18 @@ namespace CrashHandler
|
|||||||
|
|
||||||
if (strcmp(Input, "help") == 0)
|
if (strcmp(Input, "help") == 0)
|
||||||
{
|
{
|
||||||
EHPrint("Available commands are: exit, main, details, frames, tasks, console\n");
|
EHPrint("Available commands are:\n");
|
||||||
|
EHPrint("exit - Shutdown the OS.\n");
|
||||||
|
EHPrint("reboot - Reboot the OS.\n");
|
||||||
|
EHPrint("help - Display this help message.\n");
|
||||||
|
EHPrint("showbuf <INDEX> - Display the contents of a screen buffer.\n");
|
||||||
|
EHPrint(" - A sleep timer will be enabled. This will cause the OS to sleep for an unknown amount of time.\n");
|
||||||
|
EHPrint(" - \eFF4400WARNING: This can crash the system if a wrong buffer is selected.\eFAFAFA\n");
|
||||||
|
EHPrint("main - Show the main screen.\n");
|
||||||
|
EHPrint("details - Show the details screen.\n");
|
||||||
|
EHPrint("frames - Show the stack frame screen.\n");
|
||||||
|
EHPrint("tasks - Show the tasks screen.\n");
|
||||||
|
EHPrint("console - Show the console screen.\n");
|
||||||
EHPrint("Also, you can use the arrow keys to navigate the menu.\n");
|
EHPrint("Also, you can use the arrow keys to navigate the menu.\n");
|
||||||
EHPrint("=========================================================================\n");
|
EHPrint("=========================================================================\n");
|
||||||
EHPrint("Kernel Compiled at: %s %s with C++ Standard: %d\n", __DATE__, __TIME__, CPP_LANGUAGE_STANDARD);
|
EHPrint("Kernel Compiled at: %s %s with C++ Standard: %d\n", __DATE__, __TIME__, CPP_LANGUAGE_STANDARD);
|
||||||
@ -198,6 +225,23 @@ namespace CrashHandler
|
|||||||
EHPrint("\eFFFFFFNow it's safe to turn off your computer.");
|
EHPrint("\eFFFFFFNow it's safe to turn off your computer.");
|
||||||
CPU::Stop();
|
CPU::Stop();
|
||||||
}
|
}
|
||||||
|
else if (strcmp(Input, "reboot") == 0)
|
||||||
|
{
|
||||||
|
PowerManager->Reboot();
|
||||||
|
EHPrint("\eFFFFFFNow it's safe to reboot your computer.");
|
||||||
|
CPU::Stop();
|
||||||
|
}
|
||||||
|
else if (strncmp(Input, "showbuf", 7) == 0)
|
||||||
|
{
|
||||||
|
char *arg = trimwhitespace(Input + 7);
|
||||||
|
int tmpidx = SBIdx;
|
||||||
|
SBIdx = atoi(arg);
|
||||||
|
Display->SetBuffer(SBIdx);
|
||||||
|
for (int i = 0; i < 1000000; i++)
|
||||||
|
inb(0x80);
|
||||||
|
SBIdx = tmpidx;
|
||||||
|
Display->SetBuffer(SBIdx);
|
||||||
|
}
|
||||||
else if (strcmp(Input, "main") == 0)
|
else if (strcmp(Input, "main") == 0)
|
||||||
{
|
{
|
||||||
SBIdx = 255;
|
SBIdx = 255;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user