00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _XENO_NUCLEUS_ASSERT_H
00021 #define _XENO_NUCLEUS_ASSERT_H
00022
00023 #include <nucleus/types.h>
00024
00025 #define XENO_DEBUG(subsystem) \
00026 (CONFIG_XENO_OPT_DEBUG_##subsystem > 0)
00027
00028 #define XENO_ASSERT(subsystem,cond,action) do { \
00029 if (unlikely(XENO_DEBUG(subsystem) && !(cond))) { \
00030 xnarch_trace_panic_freeze(); \
00031 xnlogerr("assertion failed at %s:%d (%s)\n", \
00032 __FILE__, __LINE__, (#cond)); \
00033 xnarch_trace_panic_dump(); \
00034 action; \
00035 } \
00036 } while(0)
00037
00038 #define XENO_BUGON(subsystem,cond) \
00039 do { \
00040 if (unlikely(XENO_DEBUG(subsystem) && (cond))) \
00041 xnpod_fatal("bug at %s:%d (%s)", \
00042 __FILE__, __LINE__, (#cond)); \
00043 } while(0)
00044
00045 #ifndef CONFIG_XENO_OPT_DEBUG_QUEUES
00046 #define CONFIG_XENO_OPT_DEBUG_QUEUES 0
00047 #endif
00048 #ifndef CONFIG_XENO_OPT_DEBUG_NUCLEUS
00049 #define CONFIG_XENO_OPT_DEBUG_NUCLEUS 0
00050 #endif
00051
00052 #endif