]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/kernel_panic.cc
update
[l4.git] / kernel / fiasco / src / kern / kernel_panic.cc
1 #include <cassert>
2 #include <cstdarg>
3 #include <cstdio>
4 #include <cstdlib>
5 #include <panic.h>
6
7 #include "kernel_console.h"
8 #include "simpleio.h"
9 #include "terminate.h"
10
11
12 void
13 __assert_fail (const char *__assertion, const char *__file,
14                unsigned int __line)
15 {
16   // make sure that GZIP mode is off
17   Kconsole::console()->end_exclusive(Console::GZIP);
18
19   printf("\nAssertion failed: '%s'\n"
20          "  in %s:%i\n"
21          "  at " L4_PTR_FMT "\n",
22          __assertion, __file, __line, (Address)__builtin_return_address(0));
23
24   terminate(1);
25 }
26
27 void
28 panic(const char *format, ...)
29 {
30   // make sure that GZIP mode is off
31   Kconsole::console()->end_exclusive(Console::GZIP);
32
33   va_list args;
34
35   putstr("\033[1mPanic: ");
36   va_start (args, format);
37   vprintf  (format, args);
38   va_end   (args);
39   putstr("\033[m");
40
41   terminate (EXIT_FAILURE);
42 }