diff options
Diffstat (limited to 'panic/panic.c')
| -rw-r--r-- | panic/panic.c | 40 |
1 files changed, 40 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(); +} |
