[Xenomai-git] Philippe Gerum : cobalt/assert: move failed assertion handler out of line

2013-08-10 Thread git repository hosting
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

2013-08-01 Thread git repository hosting
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