aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel/include/chdebug.h
diff options
context:
space:
mode:
Diffstat (limited to 'os/kernel/include/chdebug.h')
-rw-r--r--os/kernel/include/chdebug.h180
1 files changed, 98 insertions, 82 deletions
diff --git a/os/kernel/include/chdebug.h b/os/kernel/include/chdebug.h
index 33363cbca..0f4083c84 100644
--- a/os/kernel/include/chdebug.h
+++ b/os/kernel/include/chdebug.h
@@ -29,34 +29,30 @@
#ifndef _CHDEBUG_H_
#define _CHDEBUG_H_
-#if CH_DBG_ENABLE_ASSERTS || CH_DBG_ENABLE_CHECKS || \
- CH_DBG_ENABLE_STACK_CHECK || CH_DBG_SYSTEM_STATE_CHECK
-#define CH_DBG_ENABLED TRUE
-#else
-#define CH_DBG_ENABLED FALSE
-#endif
-
-#define __QUOTE_THIS(p) #p
+/*===========================================================================*/
+/* Module constants. */
+/*===========================================================================*/
/*===========================================================================*/
+/* Module pre-compile time settings. */
+/*===========================================================================*/
+
/**
* @name Debug related settings
* @{
*/
-/*===========================================================================*/
-
/**
* @brief Trace buffer entries.
*/
-#ifndef CH_TRACE_BUFFER_SIZE
-#define CH_TRACE_BUFFER_SIZE 64
+#ifndef CH_DBG_TRACE_BUFFER_SIZE
+#define CH_DBG_TRACE_BUFFER_SIZE 64
#endif
/**
* @brief Fill value for thread stack area in debug mode.
*/
-#ifndef CH_STACK_FILL_VALUE
-#define CH_STACK_FILL_VALUE 0x55
+#ifndef CH_DBG_STACK_FILL_VALUE
+#define CH_DBG_STACK_FILL_VALUE 0x55
#endif
/**
@@ -66,37 +62,24 @@
* a debugger. A uninitialized field is not an error in itself but it
* better to know it.
*/
-#ifndef CH_THREAD_FILL_VALUE
-#define CH_THREAD_FILL_VALUE 0xFF
+#ifndef CH_DBG_THREAD_FILL_VALUE
+#define CH_DBG_THREAD_FILL_VALUE 0xFF
#endif
-
/** @} */
/*===========================================================================*/
-/* System state checker related code and variables. */
+/* Derived constants and error checks. */
/*===========================================================================*/
-#if !CH_DBG_SYSTEM_STATE_CHECK
-#define dbg_enter_lock()
-#define dbg_leave_lock()
-#define dbg_check_disable()
-#define dbg_check_suspend()
-#define dbg_check_enable()
-#define dbg_check_lock()
-#define dbg_check_unlock()
-#define dbg_check_lock_from_isr()
-#define dbg_check_unlock_from_isr()
-#define dbg_check_enter_isr()
-#define dbg_check_leave_isr()
-#define chDbgCheckClassI();
-#define chDbgCheckClassS();
+#if CH_DBG_ENABLE_ASSERTS || CH_DBG_ENABLE_CHECKS || \
+ CH_DBG_ENABLE_STACK_CHECK || CH_DBG_SYSTEM_STATE_CHECK
+#define CH_DBG_ENABLED TRUE
#else
-#define dbg_enter_lock() (dbg_lock_cnt = 1)
-#define dbg_leave_lock() (dbg_lock_cnt = 0)
+#define CH_DBG_ENABLED FALSE
#endif
/*===========================================================================*/
-/* Trace related structures and macros. */
+/* Module data structures and types. */
/*===========================================================================*/
#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
@@ -104,43 +87,89 @@
* @brief Trace buffer record.
*/
typedef struct {
- systime_t se_time; /**< @brief Time of the switch event. */
- thread_t *se_tp; /**< @brief Switched in thread. */
- void *se_wtobjp; /**< @brief Object where going to sleep.*/
- uint8_t se_state; /**< @brief Switched out thread state. */
+ /**
+ * @brief Time of the switch event.
+ */
+ systime_t se_time;
+ /**
+ * @brief Switched in thread.
+ */
+ thread_t *se_tp;
+ /**
+ * @brief Object where going to sleep.
+ */
+ void *se_wtobjp;
+ /**
+ * @brief Switched out thread state.
+ */
+ uint8_t se_state;
} ch_swc_event_t;
/**
* @brief Trace buffer header.
*/
typedef struct {
- unsigned tb_size; /**< @brief Trace buffer size (entries).*/
- ch_swc_event_t *tb_ptr; /**< @brief Pointer to the buffer front.*/
- /** @brief Ring buffer.*/
- ch_swc_event_t tb_buffer[CH_TRACE_BUFFER_SIZE];
+ /**
+ * @brief Trace buffer size (entries).
+ */
+ unsigned tb_size;
+ /**
+ * @brief Pointer to the buffer front.
+ */
+ ch_swc_event_t *tb_ptr;
+ /**
+ * @brief Ring buffer.
+ */
+ ch_swc_event_t tb_buffer[CH_DBG_TRACE_BUFFER_SIZE];
} ch_trace_buffer_t;
+#endif /* CH_DBG_ENABLE_TRACE */
+
+/*===========================================================================*/
+/* Module macros. */
+/*===========================================================================*/
-#if !defined(__DOXYGEN__)
-extern ch_trace_buffer_t dbg_trace_buffer;
+#define __QUOTE_THIS(p) #p
+
+#if CH_DBG_SYSTEM_STATE_CHECK
+#define _dbg_enter_lock() (ch.dbg_lock_cnt = 1)
+#define _dbg_leave_lock() (ch.dbg_lock_cnt = 0)
#endif
-#endif /* CH_DBG_ENABLE_TRACE */
+/* When the state checker feature is disabled then the following functions
+ are replaced by an empty macro.*/
+#if !CH_DBG_SYSTEM_STATE_CHECK
+#define _dbg_enter_lock()
+#define _dbg_leave_lock()
+#define _dbg_check_disable()
+#define _dbg_check_suspend()
+#define _dbg_check_enable()
+#define _dbg_check_lock()
+#define _dbg_check_unlock()
+#define _dbg_check_lock_from_isr()
+#define _dbg_check_unlock_from_isr()
+#define _dbg_check_enter_isr()
+#define _dbg_check_leave_isr()
+#define chDbgCheckClassI()
+#define chDbgCheckClassS()
+#endif
-#if !CH_DBG_ENABLE_TRACE
/* When the trace feature is disabled this function is replaced by an empty
macro.*/
-#define dbg_trace(otp)
+#if !CH_DBG_ENABLE_TRACE
+#define _dbg_trace(otp)
#endif
-/*===========================================================================*/
-/* Parameters checking related macros. */
-/*===========================================================================*/
+/* When the debug features are disabled this function is replaced by an empty
+ macro.*/
+#if !CH_DBG_ENABLED
+#define chDbgPanic(msg) {}
+#endif
-#if CH_DBG_ENABLE_CHECKS || defined(__DOXYGEN__)
/**
* @name Macro Functions
* @{
*/
+#if CH_DBG_ENABLE_CHECKS || defined(__DOXYGEN__)
/**
* @brief Function parameters check.
* @details If the condition check fails then the kernel panics and halts.
@@ -158,23 +187,15 @@ extern ch_trace_buffer_t dbg_trace_buffer;
chDbgPanic(__QUOTE_THIS(func)"()"); \
}
#endif /* !defined(chDbgCheck) */
-/** @} */
+
#else /* !CH_DBG_ENABLE_CHECKS */
#define chDbgCheck(c, func) { \
(void)(c), (void)__QUOTE_THIS(func)"()"; \
}
#endif /* !CH_DBG_ENABLE_CHECKS */
-/*===========================================================================*/
-/* Assertions related macros. */
-/*===========================================================================*/
-
#if CH_DBG_ENABLE_ASSERTS || defined(__DOXYGEN__)
/**
- * @name Macro Functions
- * @{
- */
-/**
* @brief Condition assertion.
* @details If the condition check fails then the kernel panics with the
* specified message and halts.
@@ -197,51 +218,46 @@ extern ch_trace_buffer_t dbg_trace_buffer;
chDbgPanic(m); \
}
#endif /* !defined(chDbgAssert) */
-/** @} */
#else /* !CH_DBG_ENABLE_ASSERTS */
#define chDbgAssert(c, m, r) {(void)(c);}
#endif /* !CH_DBG_ENABLE_ASSERTS */
+/** @} */
/*===========================================================================*/
-/* Panic related macros. */
+/* External declarations. */
/*===========================================================================*/
-#if !CH_DBG_ENABLED
-/* When the debug features are disabled this function is replaced by an empty
- macro.*/
-#define chDbgPanic(msg) {}
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
#if CH_DBG_SYSTEM_STATE_CHECK
- extern cnt_t dbg_isr_cnt;
- extern cnt_t dbg_lock_cnt;
- void dbg_check_disable(void);
- void dbg_check_suspend(void);
- void dbg_check_enable(void);
- void dbg_check_lock(void);
- void dbg_check_unlock(void);
- void dbg_check_lock_from_isr(void);
- void dbg_check_unlock_from_isr(void);
- void dbg_check_enter_isr(void);
- void dbg_check_leave_isr(void);
+ void _dbg_check_disable(void);
+ void _dbg_check_suspend(void);
+ void _dbg_check_enable(void);
+ void _dbg_check_lock(void);
+ void _dbg_check_unlock(void);
+ void _dbg_check_lock_from_isr(void);
+ void _dbg_check_unlock_from_isr(void);
+ void _dbg_check_enter_isr(void);
+ void _dbg_check_leave_isr(void);
void chDbgCheckClassI(void);
void chDbgCheckClassS(void);
#endif
#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
void _trace_init(void);
- void dbg_trace(thread_t *otp);
+ void _dbg_trace(thread_t *otp);
#endif
#if CH_DBG_ENABLED
- extern const char *dbg_panic_msg;
void chDbgPanic(const char *msg);
#endif
#ifdef __cplusplus
}
#endif
+/*===========================================================================*/
+/* Module inline functions. */
+/*===========================================================================*/
+
#endif /* _CHDEBUG_H_ */
/** @} */