update name of code to labcodes
This commit is contained in:
49
labcodes/lab5/kern/debug/panic.c
Normal file
49
labcodes/lab5/kern/debug/panic.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <defs.h>
|
||||
#include <stdio.h>
|
||||
#include <intr.h>
|
||||
#include <kmonitor.h>
|
||||
|
||||
static bool is_panic = 0;
|
||||
|
||||
/* *
|
||||
* __panic - __panic is called on unresolvable fatal errors. it prints
|
||||
* "panic: 'message'", and then enters the kernel monitor.
|
||||
* */
|
||||
void
|
||||
__panic(const char *file, int line, const char *fmt, ...) {
|
||||
if (is_panic) {
|
||||
goto panic_dead;
|
||||
}
|
||||
is_panic = 1;
|
||||
|
||||
// print the 'message'
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
cprintf("kernel panic at %s:%d:\n ", file, line);
|
||||
vcprintf(fmt, ap);
|
||||
cprintf("\n");
|
||||
va_end(ap);
|
||||
|
||||
panic_dead:
|
||||
intr_disable();
|
||||
while (1) {
|
||||
kmonitor(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* __warn - like panic, but don't */
|
||||
void
|
||||
__warn(const char *file, int line, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
cprintf("kernel warning at %s:%d:\n ", file, line);
|
||||
vcprintf(fmt, ap);
|
||||
cprintf("\n");
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
bool
|
||||
is_kernel_panic(void) {
|
||||
return is_panic;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user