Added all of the old tests from roslib back in
[akaros.git] / user / parlib / panic.c
1
2 #include <arch/arch.h>
3 #include <stdio.h>
4 #include <stdarg.h>
5
6 char *argv0;
7
8 /*
9  * Panic is called on unresolvable fatal errors.
10  * It prints "panic: <message>", then causes a breakpoint exception,
11  * which causes ROS to enter the ROS kernel monitor.
12  */
13 void
14 _panic(const char *file, int line, const char *fmt,...)
15 {
16         va_list ap;
17
18         va_start(ap, fmt);
19
20         // Print the panic message
21         if (argv0)
22                 printf("%s: ", argv0);
23         printf("user panic at %s:%d: ", file, line);
24         vprintf(fmt, ap);
25         printf("\n");
26
27         // Cause a breakpoint exception
28         while (1)
29                 breakpoint();
30 }
31