This commit is contained in:
2026-09-17 03:19:43 +02:00
parent 6719239036
commit 27fe15f83d
85 changed files with 945 additions and 901 deletions
+11 -7
View File
@@ -4,19 +4,21 @@
#include <zinnia/print.h>
#include <stdarg.h>
#define panic_log(msg, ...) kprintf("[ !!!! ] \e[31m" msg "\e[0m", ##__VA_ARGS__)
[[noreturn]]
void panic(const char* msg, ...) {
// TODO: Stop all other CPUs with IPI.
arch_irq_set_state(false);
irq_set_state(false);
struct percpu* cpu = percpu_get();
struct task* current = cpu->sched.current;
kprintf(
"----[ Kernel panic ]----\n"
"In task \"%s\" (TID %zu) on CPU %zu!\n",
current ? current->name : nullptr,
"[ !!!! ] \e[31m"
"Kernel panic on CPU %zu (T%zu, \"%s\"): ",
cpu->id,
current ? current->id : 0,
cpu->id
current ? current->name : nullptr
);
va_list args;
@@ -24,9 +26,11 @@ void panic(const char* msg, ...) {
kvprintf(msg, args);
va_end(args);
kprintf("----[ End of panic ]----\n");
kprintf("\e[0m");
panic_log("End of panic message\n");
while (1) {
arch_irq_wait();
irq_wait();
}
}