[Xenomai-git] Philippe Gerum : cobalt/assert: move failed assertion handler out of line
Module: xenomai-forge Branch: next Commit: 821f48883af79a2094ebf3a631458251bfd138be URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=821f48883af79a2094ebf3a631458251bfd138be Author: Philippe Gerum r...@xenomai.org Date: Thu Aug 1 15:36:17 2013 +0200 cobalt/assert: move failed assertion handler out of line In the same move, the former action argument disappears from XENO_ASSERT(), which now returns the boolean result for the asserted condition. formerly: XENO_ASSERT(subsystem, condition, action); should now be written: if (!XENO_ASSERT(subsystem, condition)) action; --- include/cobalt/kernel/assert.h | 39 --- include/cobalt/kernel/heap.h |1 - include/cobalt/kernel/misc.h | 27 -- include/cobalt/kernel/sched.h | 26 ++ include/rtdm/rtdm_driver.h | 20 +--- kernel/cobalt/Makefile |1 + kernel/cobalt/assert.c | 105 kernel/cobalt/heap.c | 16 ++ kernel/cobalt/intr.c |2 +- kernel/cobalt/rtdm/core.c | 23 - kernel/cobalt/rtdm/device.c| 32 +++- kernel/cobalt/rtdm/drvlib.c| 38 ++- kernel/cobalt/sched.c | 18 ++- kernel/cobalt/sys.c| 89 +++--- kernel/cobalt/thread.c | 18 ++- 15 files changed, 234 insertions(+), 221 deletions(-) diff --git a/include/cobalt/kernel/assert.h b/include/cobalt/kernel/assert.h index 4cf421c..cad72d0 100644 --- a/include/cobalt/kernel/assert.h +++ b/include/cobalt/kernel/assert.h @@ -16,38 +16,43 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ - #ifndef _COBALT_KERNEL_ASSERT_H #define _COBALT_KERNEL_ASSERT_H #include cobalt/kernel/trace.h -#define XENO_DEBUG(subsystem) \ - (CONFIG_XENO_OPT_DEBUG_##subsystem 0) +#define XENO_INFO KERN_INFO[Xenomai] +#define XENO_WARN KERN_WARNING [Xenomai] +#define XENO_ERR KERN_ERR [Xenomai] + +#define XENO_DEBUG(__subsys) \ + (CONFIG_XENO_OPT_DEBUG_##__subsys 0) -#define XENO_ASSERT(subsystem,cond,action) do { \ - if (unlikely(XENO_DEBUG(subsystem) !(cond))) { \ - xntrace_panic_freeze(); \ - printk(XENO_ERR assertion failed at %s:%d (%s)\n, \ -__FILE__, __LINE__, (#cond)); \ - xntrace_panic_dump(); \ - action; \ - } \ - } while(0) +#define XENO_ASSERT(__subsys, __cond) \ + ({ \ + int __ret = !XENO_DEBUG(__subsys) || (__cond); \ + if (unlikely(!__ret)) \ + __xnsys_assert_failed(__FILE__, __LINE__, (#__cond)); \ + __ret; \ + }) -#define XENO_BUGON(subsystem,cond) \ +#define XENO_BUGON(__subsys, __cond) \ do {\ - if (unlikely(XENO_DEBUG(subsystem) (cond))) \ + if (unlikely(XENO_DEBUG(__subsys) (__cond))) \ xnsys_fatal(bug at %s:%d (%s),\ - __FILE__, __LINE__, (#cond)); \ - } while(0) + __FILE__, __LINE__, (#__cond)); \ + } while (0) #ifndef CONFIG_XENO_OPT_DEBUG_NUCLEUS #define CONFIG_XENO_OPT_DEBUG_NUCLEUS 0 #endif /* CONFIG_XENO_OPT_DEBUG_NUCLEUS */ -extern void (*nkpanic)(const char *format, ...); +void __xnsys_assert_failed(const char *file, int line, const char *msg); + +void __xnsys_fatal(const char *format, ...); #define xnsys_fatal(__fmt, __args...) nkpanic(__fmt, ##__args) +extern void (*nkpanic)(const char *format, ...); + #endif /* !_COBALT_KERNEL_ASSERT_H */ diff --git a/include/cobalt/kernel/heap.h b/include/cobalt/kernel/heap.h index 263dd6a..83874ff 100644 --- a/include/cobalt/kernel/heap.h +++ b/include/cobalt/kernel/heap.h @@ -26,7 +26,6 @@ #include cobalt/kernel/lock.h #include cobalt/kernel/list.h #include cobalt/kernel/trace.h -#include cobalt/kernel/misc.h #include cobalt/uapi/kernel/types.h #include cobalt/uapi/kernel/heap.h diff --git a/include/cobalt/kernel/misc.h b/include/cobalt/kernel/misc.h deleted file mode 100644 index a2c723a..000 --- a/include/cobalt/kernel/misc.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2013 Philippe Gerum
[Xenomai-git] Philippe Gerum : cobalt/assert: move failed assertion handler out of line
Module: xenomai-forge Branch: next Commit: bce680ea75f983c6431cc6ae4394e8892439bc23 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=bce680ea75f983c6431cc6ae4394e8892439bc23 Author: Philippe Gerum r...@xenomai.org Date: Thu Aug 1 15:36:17 2013 +0200 cobalt/assert: move failed assertion handler out of line In the same move, the former action argument disappears from XENO_ASSERT(), which now returns the boolean result for the asserted condition. formerly: XENO_ASSERT(subsystem, condition, action); should now be written: if (!XENO_ASSERT(subsystem, condition)) action; --- include/cobalt/kernel/assert.h | 39 --- include/cobalt/kernel/heap.h |1 - include/cobalt/kernel/misc.h | 27 -- include/cobalt/kernel/sched.h | 26 ++ include/rtdm/rtdm_driver.h | 20 +--- kernel/cobalt/Makefile |1 + kernel/cobalt/assert.c | 105 kernel/cobalt/heap.c | 16 ++ kernel/cobalt/intr.c |2 +- kernel/cobalt/rtdm/core.c | 23 - kernel/cobalt/rtdm/device.c| 32 +++- kernel/cobalt/rtdm/drvlib.c| 38 ++- kernel/cobalt/sched.c | 18 ++- kernel/cobalt/sys.c| 89 +++--- kernel/cobalt/thread.c | 18 ++- 15 files changed, 234 insertions(+), 221 deletions(-) diff --git a/include/cobalt/kernel/assert.h b/include/cobalt/kernel/assert.h index 4cf421c..cad72d0 100644 --- a/include/cobalt/kernel/assert.h +++ b/include/cobalt/kernel/assert.h @@ -16,38 +16,43 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ - #ifndef _COBALT_KERNEL_ASSERT_H #define _COBALT_KERNEL_ASSERT_H #include cobalt/kernel/trace.h -#define XENO_DEBUG(subsystem) \ - (CONFIG_XENO_OPT_DEBUG_##subsystem 0) +#define XENO_INFO KERN_INFO[Xenomai] +#define XENO_WARN KERN_WARNING [Xenomai] +#define XENO_ERR KERN_ERR [Xenomai] + +#define XENO_DEBUG(__subsys) \ + (CONFIG_XENO_OPT_DEBUG_##__subsys 0) -#define XENO_ASSERT(subsystem,cond,action) do { \ - if (unlikely(XENO_DEBUG(subsystem) !(cond))) { \ - xntrace_panic_freeze(); \ - printk(XENO_ERR assertion failed at %s:%d (%s)\n, \ -__FILE__, __LINE__, (#cond)); \ - xntrace_panic_dump(); \ - action; \ - } \ - } while(0) +#define XENO_ASSERT(__subsys, __cond) \ + ({ \ + int __ret = !XENO_DEBUG(__subsys) || (__cond); \ + if (unlikely(!__ret)) \ + __xnsys_assert_failed(__FILE__, __LINE__, (#__cond)); \ + __ret; \ + }) -#define XENO_BUGON(subsystem,cond) \ +#define XENO_BUGON(__subsys, __cond) \ do {\ - if (unlikely(XENO_DEBUG(subsystem) (cond))) \ + if (unlikely(XENO_DEBUG(__subsys) (__cond))) \ xnsys_fatal(bug at %s:%d (%s),\ - __FILE__, __LINE__, (#cond)); \ - } while(0) + __FILE__, __LINE__, (#__cond)); \ + } while (0) #ifndef CONFIG_XENO_OPT_DEBUG_NUCLEUS #define CONFIG_XENO_OPT_DEBUG_NUCLEUS 0 #endif /* CONFIG_XENO_OPT_DEBUG_NUCLEUS */ -extern void (*nkpanic)(const char *format, ...); +void __xnsys_assert_failed(const char *file, int line, const char *msg); + +void __xnsys_fatal(const char *format, ...); #define xnsys_fatal(__fmt, __args...) nkpanic(__fmt, ##__args) +extern void (*nkpanic)(const char *format, ...); + #endif /* !_COBALT_KERNEL_ASSERT_H */ diff --git a/include/cobalt/kernel/heap.h b/include/cobalt/kernel/heap.h index 263dd6a..83874ff 100644 --- a/include/cobalt/kernel/heap.h +++ b/include/cobalt/kernel/heap.h @@ -26,7 +26,6 @@ #include cobalt/kernel/lock.h #include cobalt/kernel/list.h #include cobalt/kernel/trace.h -#include cobalt/kernel/misc.h #include cobalt/uapi/kernel/types.h #include cobalt/uapi/kernel/heap.h diff --git a/include/cobalt/kernel/misc.h b/include/cobalt/kernel/misc.h deleted file mode 100644 index a2c723a..000 --- a/include/cobalt/kernel/misc.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2013 Philippe Gerum