From 649decd10516a30886d05f5afca3d425d836db0e Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 10 Aug 2013 10:17:45 +0000 Subject: Cleanup debug module. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6120 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/include/chdebug.h | 180 ++++++++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 82 deletions(-) (limited to 'os/kernel/include/chdebug.h') 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,22 +187,14 @@ 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 @@ -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_ */ /** @} */ -- cgit v1.2.3