diff options
Diffstat (limited to '')
-rw-r--r-- | kernel/core/panic.c (renamed from kernel/panic.c) | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/panic.c b/kernel/core/panic.c index 65279f0..a44a73c 100644 --- a/kernel/panic.c +++ b/kernel/core/panic.c @@ -1,8 +1,10 @@ #include <kernel/panic.h> +#include <kernel/spinlock.h> #include <libk/io.h> #include <stdint.h> #include <stddef.h> +static struct spinlock panic_lock = {0}; static int panicked = 0; void walk_stack(uintptr_t *addrs, size_t n); @@ -19,8 +21,11 @@ void stack_trace(void) { } void panic(const char *str) { + disable_ints(); + spin_lock(&panic_lock); panicked = 1; - kprintf("KERNEL PANIC: %s\n", str); + spin_unlock(&panic_lock); + kprintf("KERNEL PANIC - NOT SYNCING: %s\n", str); stack_trace(); while (1); } |