diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-29 12:53:57 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-29 12:53:57 -0400 |
| commit | c2788174198632e0c8bdbfa7762081f595460bdf (patch) | |
| tree | 373b1f5c7cfe0e87f29c1c8956579c58b4f22bf9 /panic | |
| parent | 8de23ca36173cfdb3c609074496115ebd9045887 (diff) | |
| download | jove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.tar.gz jove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.tar.bz2 jove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.zip | |
move process code into proc. add panic folder
Diffstat (limited to 'panic')
| -rw-r--r-- | panic/panic.c | 40 | ||||
| -rw-r--r-- | panic/panic.h | 16 |
2 files changed, 56 insertions, 0 deletions
diff --git a/panic/panic.c b/panic/panic.c new file mode 100644 index 0000000..5bde05b --- /dev/null +++ b/panic/panic.c @@ -0,0 +1,40 @@ +#include "panic.h" +#include "lib/printf.h" + +int _kernel_panic_unlock = 0; + +void +__panic_reason(const char *fmt, va_list ap) +{ + _kernel_panic_unlock = 1; + + kvprintf(fmt, ap); +} + +void +__panic_end(void) +{ + hcf(); +} + +void +kpanic(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + __panic_reason(fmt, ap); + __panic_stack_trace(__panic_get_bp()); + __panic_end(); +} + +void +kpanic_istate(void *state, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + __panic_reason(fmt, ap); + __panic_stack_trace(__panic_print_istate(state)); + __panic_end(); +} diff --git a/panic/panic.h b/panic/panic.h new file mode 100644 index 0000000..4ca4a40 --- /dev/null +++ b/panic/panic.h @@ -0,0 +1,16 @@ +#ifndef _JOVE_PANIC_H +#define _JOVE_PANIC_H 1 + +#include "jove.h" +#include <stdarg.h> + +void __panic_reason(const char *fmt, va_list ap); +void *__panic_print_istate(void *state); +void *__panic_get_bp(void); +void __panic_stack_trace(void *bp); +NORETURN void __panic_end(void); + +NORETURN void kpanic(const char *fmt, ...); +NORETURN void kpanic_istate(void *state, const char *fmt, ...); + +#endif |
