diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-08-10 10:17:45 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-08-10 10:17:45 +0000 |
commit | 649decd10516a30886d05f5afca3d425d836db0e (patch) | |
tree | 48e4aa7173da4f16764926738ba5518b03b4496b | |
parent | c3dc5598c315f4650bfcd1e595104a2ace7aa87c (diff) | |
download | ChibiOS-649decd10516a30886d05f5afca3d425d836db0e.tar.gz ChibiOS-649decd10516a30886d05f5afca3d425d836db0e.tar.bz2 ChibiOS-649decd10516a30886d05f5afca3d425d836db0e.zip |
Cleanup debug module.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6120 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | demos/ARMCM4-STM32F303-DISCOVERY/chconf.h | 16 | ||||
-rw-r--r-- | os/kernel/include/ch.h | 2 | ||||
-rw-r--r-- | os/kernel/include/chdebug.h | 180 | ||||
-rw-r--r-- | os/kernel/include/chglobal.h | 24 | ||||
-rw-r--r-- | os/kernel/include/chsys.h | 20 | ||||
-rw-r--r-- | os/kernel/ports/ARMCMx/chcore_v7m.h | 2 | ||||
-rw-r--r-- | os/kernel/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s | 6 | ||||
-rw-r--r-- | os/kernel/src/chdebug.c | 125 | ||||
-rw-r--r-- | os/kernel/src/chdynamic.c | 8 | ||||
-rw-r--r-- | os/kernel/src/chthreads.c | 4 |
10 files changed, 208 insertions, 179 deletions
diff --git a/demos/ARMCM4-STM32F303-DISCOVERY/chconf.h b/demos/ARMCM4-STM32F303-DISCOVERY/chconf.h index 6ee0bd743..31dbbcf4f 100644 --- a/demos/ARMCM4-STM32F303-DISCOVERY/chconf.h +++ b/demos/ARMCM4-STM32F303-DISCOVERY/chconf.h @@ -357,7 +357,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_STATISTICS) || defined(__DOXYGEN__)
-#define CH_DBG_STATISTICS FALSE
+#define CH_DBG_STATISTICS TRUE
#endif
/**
@@ -368,7 +368,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_SYSTEM_STATE_CHECK) || defined(__DOXYGEN__)
-#define CH_DBG_SYSTEM_STATE_CHECK FALSE
+#define CH_DBG_SYSTEM_STATE_CHECK TRUE
#endif
/**
@@ -379,7 +379,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_ENABLE_CHECKS) || defined(__DOXYGEN__)
-#define CH_DBG_ENABLE_CHECKS FALSE
+#define CH_DBG_ENABLE_CHECKS TRUE
#endif
/**
@@ -391,7 +391,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_ENABLE_ASSERTS) || defined(__DOXYGEN__)
-#define CH_DBG_ENABLE_ASSERTS FALSE
+#define CH_DBG_ENABLE_ASSERTS TRUE
#endif
/**
@@ -402,7 +402,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_ENABLE_TRACE) || defined(__DOXYGEN__)
-#define CH_DBG_ENABLE_TRACE FALSE
+#define CH_DBG_ENABLE_TRACE TRUE
#endif
/**
@@ -416,7 +416,7 @@ * @p panic_msg variable set to @p NULL.
*/
#if !defined(CH_DBG_ENABLE_STACK_CHECK) || defined(__DOXYGEN__)
-#define CH_DBG_ENABLE_STACK_CHECK FALSE
+#define CH_DBG_ENABLE_STACK_CHECK TRUE
#endif
/**
@@ -428,7 +428,7 @@ * @note The default is @p FALSE.
*/
#if !defined(CH_DBG_FILL_THREADS) || defined(__DOXYGEN__)
-#define CH_DBG_FILL_THREADS FALSE
+#define CH_DBG_FILL_THREADS TRUE
#endif
/**
@@ -441,7 +441,7 @@ * tickless mode.
*/
#if !defined(CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
-#define CH_DBG_THREADS_PROFILING FALSE
+#define CH_DBG_THREADS_PROFILING TRUE
#endif
/** @} */
diff --git a/os/kernel/include/ch.h b/os/kernel/include/ch.h index a3d475db4..6af6b8d4d 100644 --- a/os/kernel/include/ch.h +++ b/os/kernel/include/ch.h @@ -111,8 +111,8 @@ typedef struct virtual_timer virtual_timer_t; #include "chcore.h"
#include "chtm.h"
#include "chstats.h"
-#include "chglobal.h"
#include "chsys.h"
+#include "chglobal.h"
#include "chvt.h"
#include "chthreads.h"
#include "chlists.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,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_ */
/** @} */
diff --git a/os/kernel/include/chglobal.h b/os/kernel/include/chglobal.h index c8e0ca15b..4bbc0775b 100644 --- a/os/kernel/include/chglobal.h +++ b/os/kernel/include/chglobal.h @@ -120,6 +120,30 @@ typedef struct ch_system { * @brief Virtual timers delta list header.
*/
virtual_timers_list_t vtlist;
+#if CH_DBG_ENABLED || defined(__DOXYGEN__)
+ /**
+ * @brief Pointer to the panic message.
+ * @details This pointer is meant to be accessed through the debugger, it is
+ * written once and then the system is halted.
+ */
+ const char *dbg_panic_msg;
+#endif
+#if CH_DBG_SYSTEM_STATE_CHECK || defined(__DOXYGEN__)
+ /**
+ * @brief ISR nesting level.
+ */
+ cnt_t dbg_isr_cnt;
+ /**
+ * @brief Lock nesting level.
+ */
+ cnt_t dbg_lock_cnt;
+#endif
+#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
+ /**
+ * @brief Public trace buffer.
+ */
+ ch_trace_buffer_t dbg_trace_buffer;
+#endif
} ch_system_t;
/*===========================================================================*/
diff --git a/os/kernel/include/chsys.h b/os/kernel/include/chsys.h index 2d7cfa430..475e090bd 100644 --- a/os/kernel/include/chsys.h +++ b/os/kernel/include/chsys.h @@ -62,7 +62,7 @@ #define CH_IRQ_PROLOGUE() \
PORT_IRQ_PROLOGUE(); \
_stats_increase_irq(); \
- dbg_check_enter_isr()
+ _dbg_check_enter_isr()
/**
* @brief IRQ handler exit code.
@@ -73,7 +73,7 @@ * @special
*/
#define CH_IRQ_EPILOGUE() \
- dbg_check_leave_isr(); \
+ _dbg_check_leave_isr(); \
PORT_IRQ_EPILOGUE()
/**
@@ -202,7 +202,7 @@ */
#define chSysSwitch(ntp, otp) { \
\
- dbg_trace(otp); \
+ _dbg_trace(otp); \
_stats_ctxswc(ntp, otp); \
CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp); \
port_switch(ntp, otp); \
@@ -243,7 +243,7 @@ extern "C" { static inline void chSysDisable(void) {
port_disable();
- dbg_check_disable();
+ _dbg_check_disable();
}
/**
@@ -260,7 +260,7 @@ static inline void chSysDisable(void) { static inline void chSysSuspend(void) {
port_suspend();
- dbg_check_suspend();
+ _dbg_check_suspend();
}
/**
@@ -274,7 +274,7 @@ static inline void chSysSuspend(void) { */
static inline void chSysEnable(void) {
- dbg_check_enable();
+ _dbg_check_enable();
port_enable();
}
@@ -287,7 +287,7 @@ static inline void chSysLock(void) { port_lock();
_stats_start_measure_crit_thd();
- dbg_check_lock();
+ _dbg_check_lock();
}
/**
@@ -297,7 +297,7 @@ static inline void chSysLock(void) { */
static inline void chSysUnlock(void) {
- dbg_check_unlock();
+ _dbg_check_unlock();
_stats_stop_measure_crit_thd();
port_unlock();
}
@@ -318,7 +318,7 @@ static inline void chSysLockFromISR(void) { port_lock_from_isr();
_stats_start_measure_crit_isr();
- dbg_check_lock_from_isr();
+ _dbg_check_lock_from_isr();
}
/**
@@ -336,7 +336,7 @@ static inline void chSysLockFromISR(void) { */
static inline void chSysUnlockFromISR(void) {
- dbg_check_unlock_from_isr();
+ _dbg_check_unlock_from_isr();
_stats_stop_measure_crit_isr();
port_unlock_from_isr();
}
diff --git a/os/kernel/ports/ARMCMx/chcore_v7m.h b/os/kernel/ports/ARMCMx/chcore_v7m.h index a0a2680b7..3426977a1 100644 --- a/os/kernel/ports/ARMCMx/chcore_v7m.h +++ b/os/kernel/ports/ARMCMx/chcore_v7m.h @@ -371,7 +371,7 @@ struct context { #define port_switch(ntp, otp) _port_switch(ntp, otp)
#else
#define port_switch(ntp, otp) { \
- struct intctx *r13 = __get_PSP(); \
+ struct intctx *r13 = (struct intctx *)__get_PSP(); \
if ((stkalign_t *)(r13 - 1) < otp->p_stklimit) \
chDbgPanic("stack overflow"); \
_port_switch(ntp, otp); \
diff --git a/os/kernel/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s b/os/kernel/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s index 881448dfc..36864a2c9 100644 --- a/os/kernel/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s +++ b/os/kernel/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s @@ -85,7 +85,7 @@ _port_switch: .globl _port_thread_start
_port_thread_start:
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_unlock
+ bl _dbg_check_unlock
#endif
#if CH_DBG_STATISTICS
bl _stats_stop_measure_crit_thd
@@ -112,11 +112,11 @@ _port_switch_from_isr: bl _stats_start_measure_crit_thd
#endif
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_lock
+ bl _dbg_check_lock
#endif
bl chSchDoReschedule
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_unlock
+ bl _dbg_check_unlock
#endif
#if CH_DBG_STATISTICS
bl _stats_stop_measure_crit_thd
diff --git a/os/kernel/src/chdebug.c b/os/kernel/src/chdebug.c index ba9c469b9..05b746357 100644 --- a/os/kernel/src/chdebug.c +++ b/os/kernel/src/chdebug.c @@ -51,29 +51,38 @@ #include "ch.h"
/*===========================================================================*/
-/* System state checker related code and variables. */
+/* Module local definitions. */
/*===========================================================================*/
-#if CH_DBG_SYSTEM_STATE_CHECK || defined(__DOXYGEN__)
+/*===========================================================================*/
+/* Module exported variables. */
+/*===========================================================================*/
-/**
- * @brief ISR nesting level.
- */
-cnt_t dbg_isr_cnt;
+/*===========================================================================*/
+/* Module local types. */
+/*===========================================================================*/
-/**
- * @brief Lock nesting level.
- */
-cnt_t dbg_lock_cnt;
+/*===========================================================================*/
+/* Module local variables. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module local functions. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module exported functions. */
+/*===========================================================================*/
+#if CH_DBG_SYSTEM_STATE_CHECK || defined(__DOXYGEN__)
/**
* @brief Guard code for @p chSysDisable().
*
* @notapi
*/
-void dbg_check_disable(void) {
+void _dbg_check_disable(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#1");
}
@@ -82,9 +91,9 @@ void dbg_check_disable(void) { *
* @notapi
*/
-void dbg_check_suspend(void) {
+void _dbg_check_suspend(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#2");
}
@@ -93,9 +102,9 @@ void dbg_check_suspend(void) { *
* @notapi
*/
-void dbg_check_enable(void) {
+void _dbg_check_enable(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#3");
}
@@ -104,11 +113,11 @@ void dbg_check_enable(void) { *
* @notapi
*/
-void dbg_check_lock(void) {
+void _dbg_check_lock(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#4");
- dbg_enter_lock();
+ _dbg_enter_lock();
}
/**
@@ -116,11 +125,11 @@ void dbg_check_lock(void) { *
* @notapi
*/
-void dbg_check_unlock(void) {
+void _dbg_check_unlock(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt <= 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt <= 0))
chDbgPanic("SV#5");
- dbg_leave_lock();
+ _dbg_leave_lock();
}
/**
@@ -128,11 +137,11 @@ void dbg_check_unlock(void) { *
* @notapi
*/
-void dbg_check_lock_from_isr(void) {
+void _dbg_check_lock_from_isr(void) {
- if ((dbg_isr_cnt <= 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt <= 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#6");
- dbg_enter_lock();
+ _dbg_enter_lock();
}
/**
@@ -140,11 +149,11 @@ void dbg_check_lock_from_isr(void) { *
* @notapi
*/
-void dbg_check_unlock_from_isr(void) {
+void _dbg_check_unlock_from_isr(void) {
- if ((dbg_isr_cnt <= 0) || (dbg_lock_cnt <= 0))
+ if ((ch.dbg_isr_cnt <= 0) || (ch.dbg_lock_cnt <= 0))
chDbgPanic("SV#7");
- dbg_leave_lock();
+ _dbg_leave_lock();
}
/**
@@ -152,12 +161,12 @@ void dbg_check_unlock_from_isr(void) { *
* @notapi
*/
-void dbg_check_enter_isr(void) {
+void _dbg_check_enter_isr(void) {
port_lock_from_isr();
- if ((dbg_isr_cnt < 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt < 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#8");
- dbg_isr_cnt++;
+ ch.dbg_isr_cnt++;
port_unlock_from_isr();
}
@@ -166,12 +175,12 @@ void dbg_check_enter_isr(void) { *
* @notapi
*/
-void dbg_check_leave_isr(void) {
+void _dbg_check_leave_isr(void) {
port_lock_from_isr();
- if ((dbg_isr_cnt <= 0) || (dbg_lock_cnt != 0))
+ if ((ch.dbg_isr_cnt <= 0) || (ch.dbg_lock_cnt != 0))
chDbgPanic("SV#9");
- dbg_isr_cnt--;
+ ch.dbg_isr_cnt--;
port_unlock_from_isr();
}
@@ -185,7 +194,7 @@ void dbg_check_leave_isr(void) { */
void chDbgCheckClassI(void) {
- if ((dbg_isr_cnt < 0) || (dbg_lock_cnt <= 0))
+ if ((ch.dbg_isr_cnt < 0) || (ch.dbg_lock_cnt <= 0))
chDbgPanic("SV#10");
}
@@ -199,30 +208,21 @@ void chDbgCheckClassI(void) { */
void chDbgCheckClassS(void) {
- if ((dbg_isr_cnt != 0) || (dbg_lock_cnt <= 0))
+ if ((ch.dbg_isr_cnt != 0) || (ch.dbg_lock_cnt <= 0))
chDbgPanic("SV#11");
}
#endif /* CH_DBG_SYSTEM_STATE_CHECK */
-/*===========================================================================*/
-/* Trace related code and variables. */
-/*===========================================================================*/
-
#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
/**
- * @brief Public trace buffer.
- */
-ch_trace_buffer_t dbg_trace_buffer;
-
-/**
* @brief Trace circular buffer subsystem initialization.
* @note Internal use only.
*/
void _trace_init(void) {
- dbg_trace_buffer.tb_size = CH_TRACE_BUFFER_SIZE;
- dbg_trace_buffer.tb_ptr = &dbg_trace_buffer.tb_buffer[0];
+ ch.dbg_trace_buffer.tb_size = CH_DBG_TRACE_BUFFER_SIZE;
+ ch.dbg_trace_buffer.tb_ptr = &ch.dbg_trace_buffer.tb_buffer[0];
}
/**
@@ -232,38 +232,27 @@ void _trace_init(void) { *
* @notapi
*/
-void dbg_trace(thread_t *otp) {
-
- dbg_trace_buffer.tb_ptr->se_time = chVTGetSystemTimeX();
- dbg_trace_buffer.tb_ptr->se_tp = currp;
- dbg_trace_buffer.tb_ptr->se_wtobjp = otp->p_u.wtobjp;
- dbg_trace_buffer.tb_ptr->se_state = (uint8_t)otp->p_state;
- if (++dbg_trace_buffer.tb_ptr >=
- &dbg_trace_buffer.tb_buffer[CH_TRACE_BUFFER_SIZE])
- dbg_trace_buffer.tb_ptr = &dbg_trace_buffer.tb_buffer[0];
+void _dbg_trace(thread_t *otp) {
+
+ ch.dbg_trace_buffer.tb_ptr->se_time = chVTGetSystemTimeX();
+ ch.dbg_trace_buffer.tb_ptr->se_tp = currp;
+ ch.dbg_trace_buffer.tb_ptr->se_wtobjp = otp->p_u.wtobjp;
+ ch.dbg_trace_buffer.tb_ptr->se_state = (uint8_t)otp->p_state;
+ if (++ch.dbg_trace_buffer.tb_ptr >=
+ &ch.dbg_trace_buffer.tb_buffer[CH_DBG_TRACE_BUFFER_SIZE])
+ ch.dbg_trace_buffer.tb_ptr = &ch.dbg_trace_buffer.tb_buffer[0];
}
#endif /* CH_DBG_ENABLE_TRACE */
-/*===========================================================================*/
-/* Panic related code and variables. */
-/*===========================================================================*/
-
#if CH_DBG_ENABLED || defined(__DOXYGEN__)
/**
- * @brief Pointer to the panic message.
- * @details This pointer is meant to be accessed through the debugger, it is
- * written once and then the system is halted.
- */
-const char *dbg_panic_msg;
-
-/**
* @brief Prints a panic message on the console and then halts the system.
*
* @param[in] msg the pointer to the panic message string
*/
void chDbgPanic(const char *msg) {
- dbg_panic_msg = msg;
+ ch.dbg_panic_msg = msg;
chSysHalt();
}
#endif /* CH_DBG_ENABLED */
diff --git a/os/kernel/src/chdynamic.c b/os/kernel/src/chdynamic.c index 2b12e698f..86e37df14 100644 --- a/os/kernel/src/chdynamic.c +++ b/os/kernel/src/chdynamic.c @@ -156,10 +156,10 @@ thread_t *chThdCreateFromHeap(memory_heap_t *heapp, size_t size, #if CH_DBG_FILL_THREADS
_thread_memfill((uint8_t *)wsp,
(uint8_t *)wsp + sizeof(thread_t),
- CH_THREAD_FILL_VALUE);
+ CH_DBG_THREAD_FILL_VALUE);
_thread_memfill((uint8_t *)wsp + sizeof(thread_t),
(uint8_t *)wsp + size,
- CH_STACK_FILL_VALUE);
+ CH_DBG_STACK_FILL_VALUE);
#endif
chSysLock();
@@ -207,10 +207,10 @@ thread_t *chThdCreateFromMemoryPool(memory_pool_t *mp, tprio_t prio, #if CH_DBG_FILL_THREADS
_thread_memfill((uint8_t *)wsp,
(uint8_t *)wsp + sizeof(thread_t),
- CH_THREAD_FILL_VALUE);
+ CH_DBG_THREAD_FILL_VALUE);
_thread_memfill((uint8_t *)wsp + sizeof(thread_t),
(uint8_t *)wsp + mp->mp_object_size,
- CH_STACK_FILL_VALUE);
+ CH_DBG_STACK_FILL_VALUE);
#endif
chSysLock();
diff --git a/os/kernel/src/chthreads.c b/os/kernel/src/chthreads.c index ff6e5e597..a18e82005 100644 --- a/os/kernel/src/chthreads.c +++ b/os/kernel/src/chthreads.c @@ -212,10 +212,10 @@ thread_t *chThdCreateStatic(void *wsp, size_t size, #if CH_DBG_FILL_THREADS
_thread_memfill((uint8_t *)wsp,
(uint8_t *)wsp + sizeof(thread_t),
- CH_THREAD_FILL_VALUE);
+ CH_DBG_THREAD_FILL_VALUE);
_thread_memfill((uint8_t *)wsp + sizeof(thread_t),
(uint8_t *)wsp + size,
- CH_STACK_FILL_VALUE);
+ CH_DBG_STACK_FILL_VALUE);
#endif
chSysLock();
chSchWakeupS(tp = chThdCreateI(wsp, size, prio, pf, arg), RDY_OK);
|