From 95cd78840f0891e60f5ebecc8a8eb4fbaf3c2ebf Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Sun, 12 Jan 2025 01:17:36 -0600 Subject: PROJECT RESTRUCTURING Move the entire kernel into its own directory. Create new directories for system commands, libraries and other required essentials for a complete Unix-like operating system. Signed-off-by: Danny Holman --- kernel/core/panic.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 kernel/core/panic.c (limited to 'kernel/core/panic.c') diff --git a/kernel/core/panic.c b/kernel/core/panic.c new file mode 100644 index 0000000..a44a73c --- /dev/null +++ b/kernel/core/panic.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include + +static struct spinlock panic_lock = {0}; +static int panicked = 0; + +void walk_stack(uintptr_t *addrs, size_t n); + +void stack_trace(void) { + kprintf("PRINTING STACK TRACE\n"); + uintptr_t strace[32]; + walk_stack(strace, 32); + for (int i = 0; i < 32; i++) { + if (strace[i] == 0) + break; + kprintf("#%d: %x\n", i, strace[i]); + } +} + +void panic(const char *str) { + disable_ints(); + spin_lock(&panic_lock); + panicked = 1; + spin_unlock(&panic_lock); + kprintf("KERNEL PANIC - NOT SYNCING: %s\n", str); + stack_trace(); + while (1); +} -- cgit v1.2.3