diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/debug/debug.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/debug/debug.c b/lib/debug/debug.c index 847074d5..54a2612d 100644 --- a/lib/debug/debug.c +++ b/lib/debug/debug.c @@ -23,6 +23,7 @@ #include <ctype.h> #include <debug.h> +#include <err.h> #include <stdlib.h> #include <printf.h> #include <stdio.h> @@ -31,6 +32,7 @@ #include <platform.h> #include <platform/debug.h> #include <kernel/spinlock.h> +#include <kernel/thread.h> void spin(uint32_t usecs) { @@ -48,6 +50,12 @@ void spin(uint32_t usecs) void _panic(const char *fmt, ...) { va_list ap; + struct thread *curr = get_current_thread(); + + if (curr && thread_get_flag_exit_on_panic(curr)) { + thread_exit(ERR_FAULT); + } + va_start(ap, fmt); vprintf(fmt, ap); va_end(ap); |