# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxxxx
# Node ID 1d17ddd9e45d25e1b5fc21e558a4973b70572334
# Parent 25c6ea6d4024c86c2dfd54ef9f44c793e7346ee8
[XEN] BUG() places console in sync mode.
Also move the BUG code out of line.
Original patch from Jimi Xenidis.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
xen/drivers/char/console.c | 9 +++++++++
xen/include/xen/lib.h | 18 +++++++++++-------
2 files changed, 20 insertions(+), 7 deletions(-)
diff -r 25c6ea6d4024 -r 1d17ddd9e45d xen/drivers/char/console.c
--- a/xen/drivers/char/console.c Wed Jun 28 16:05:27 2006 +0100
+++ b/xen/drivers/char/console.c Wed Jun 28 16:15:36 2006 +0100
@@ -741,6 +741,15 @@ void panic(const char *fmt, ...)
machine_restart(0);
}
+void __bug(char *file, int line)
+{
+ console_start_sync();
+ debugtrace_dump();
+ printk("BUG at %s:%d\n", file, line);
+ FORCE_CRASH();
+ for ( ; ; ) ;
+}
+
/*
* Local variables:
* mode: C
diff -r 25c6ea6d4024 -r 1d17ddd9e45d xen/include/xen/lib.h
--- a/xen/include/xen/lib.h Wed Jun 28 16:05:27 2006 +0100
+++ b/xen/include/xen/lib.h Wed Jun 28 16:15:36 2006 +0100
@@ -8,19 +8,23 @@
#include <xen/xmalloc.h>
#include <xen/string.h>
-#define BUG() do { \
- debugtrace_dump(); \
- printk("BUG at %s:%d\n", __FILE__, __LINE__); \
- FORCE_CRASH(); \
-} while ( 0 )
-
+extern void __bug(char *file, int line) __attribute__((noreturn));
+#define BUG() __bug(__FILE__, __LINE__)
#define BUG_ON(_p) do { if (_p) BUG(); } while ( 0 )
/* Force a compilation error if condition is true */
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2 * !!(condition)]))
#ifndef NDEBUG
-#define ASSERT(_p) { if ( !(_p) ) { printk("Assertion '%s' failed, line %d,
file %s\n", #_p , __LINE__, __FILE__); BUG(); } }
+#define ASSERT(_p) \
+ do { \
+ if ( !(_p) ) \
+ { \
+ printk("Assertion '%s' failed, line %d, file %s\n", #_p , \
+ __LINE__, __FILE__); \
+ BUG(); \
+ } \
+ } while ( 0 )
#else
#define ASSERT(_p) ((void)0)
#endif
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|