projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Comments.
[pintos-anon]
/
src
/
lib
/
debug.c
diff --git
a/src/lib/debug.c
b/src/lib/debug.c
index 2082eedd5714824894f56cb6225c91d8008fc935..6d75e7a34c47bf25332d5a9cc24ac9cc153c217b 100644
(file)
--- a/
src/lib/debug.c
+++ b/
src/lib/debug.c
@@
-5,7
+5,9
@@
#include <stdio.h>
#include <string.h>
#ifdef KERNEL
#include <stdio.h>
#include <string.h>
#ifdef KERNEL
+#include "threads/init.h"
#include "threads/interrupt.h"
#include "threads/interrupt.h"
+#include "devices/serial.h"
#else
#include <syscall.h>
#endif
#else
#include <syscall.h>
#endif
@@
-60,8
+62,9
@@
debug_message (const char *file, int line, const char *function,
}
}
}
}
-/* Halts the OS, printing the source file name, line number, and
- function name, plus a user-specific message. */
+/* Halts the OS or user program, printing the source file name,
+ line number, and function name, plus a user-specific
+ message. */
void
debug_panic (const char *file, int line, const char *function,
const char *message, ...)
void
debug_panic (const char *file, int line, const char *function,
const char *message, ...)
@@
-72,7
+75,12
@@
debug_panic (const char *file, int line, const char *function,
intr_disable ();
#endif
intr_disable ();
#endif
- printf ("PANIC at %s:%d in %s(): ", file, line, function);
+#ifdef KERNEL
+ printf ("Kernel PANIC at %s:%d in %s(): ", file, line, function);
+#else
+ printf ("User process panic at %s:%d in %s(): ", file, line, function);
+#endif
+
va_start (args, message);
vprintf (message, args);
printf ("\n");
va_start (args, message);
vprintf (message, args);
printf ("\n");
@@
-81,6
+89,9
@@
debug_panic (const char *file, int line, const char *function,
debug_backtrace ();
#ifdef KERNEL
debug_backtrace ();
#ifdef KERNEL
+ serial_flush ();
+ if (power_off_when_done)
+ power_off ();
for (;;);
#else
exit (1);
for (;;);
#else
exit (1);