Kernel: Improve kernel panic message and rename it 'panic'->'Panic'

This commit is contained in:
Bananymous
2023-01-09 14:56:20 +02:00
parent 531f470132
commit efd8638a96
19 changed files with 91 additions and 64 deletions

View File

@@ -0,0 +1,31 @@
#pragma once
#include <kernel/kprint.h>
#include <kernel/Serial.h>
#include <kernel/VESA.h>
#define Panic(...) PanicImpl(__FILE__, __LINE__, __VA_ARGS__)
namespace Kernel
{
template<typename... Args>
__attribute__((__noreturn__))
static void PanicImpl(const char* file, int line, const char* message, Args... args)
{
if (VESA::IsInitialized())
{
kprint("\e[31mKernel panic at {}:{}\n", file, line);
kprint(message, args...);
kprint("\e[m\n");
}
else
{
derrorln("Kernel panic at {}:{}", file, line);
derrorln(message, args...);
}
asm volatile("cli; hlt");
__builtin_unreachable();
}
}

View File

@@ -26,6 +26,7 @@ namespace VESA
};
bool Initialize();
bool IsInitialized();
void PutBitmapAt(const uint8_t*, uint32_t, uint32_t, Color);
void PutBitmapAt(const uint8_t*, uint32_t, uint32_t, Color, Color);
void PutCharAt(uint16_t, uint32_t, uint32_t, Color, Color);

View File

@@ -3,5 +3,5 @@
#include <BAN/Formatter.h>
#include <kernel/TTY.h>
#define kprint(...) BAN::Formatter::print(TTY::PutCharCurrent, __VA_ARGS__)
#define kprint(...) BAN::Formatter::print(TTY::PutCharCurrent, __VA_ARGS__)
#define kprintln(...) BAN::Formatter::println(TTY::PutCharCurrent, __VA_ARGS__)

View File

@@ -1,19 +0,0 @@
#pragma once
#include <kernel/kprint.h>
namespace Kernel
{
template<typename... Args>
__attribute__((__noreturn__))
static void panic(const char* message, Args... args)
{
kprint("\e[31mKernel panic: ");
kprint(message, args...);
kprint("\e[m\n");
asm volatile("cli; hlt");
__builtin_unreachable();
}
}