From b9933c2089f5f0cd93738ae9081c45fcf3df54b7 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 11 Aug 2011 17:51:37 +0000 Subject: Implemented system state checker debug option, remove the option CH_USE_NESTED_LOCKS. Documentation improvements and fixes. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3221 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/include/chsys.h | 74 ++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 36 deletions(-) (limited to 'os/kernel/include/chsys.h') diff --git a/os/kernel/include/chsys.h b/os/kernel/include/chsys.h index 37d4cd7ce..994b1301f 100644 --- a/os/kernel/include/chsys.h +++ b/os/kernel/include/chsys.h @@ -73,7 +73,10 @@ * * @special */ -#define chSysSwitchI(ntp, otp) port_switch(ntp, otp) +#define chSysSwitchI(ntp, otp) { \ + dbg_trace(otp); \ + port_switch(ntp, otp); \ +} /** * @brief Raises the system interrupt priority mask to the maximum level. @@ -83,7 +86,10 @@ * * @special */ -#define chSysDisable() port_disable() +#define chSysDisable() { \ + port_disable(); \ + dbg_check_disable(); \ +} /** * @brief Raises the system interrupt priority mask to system level. @@ -96,7 +102,10 @@ * * @special */ -#define chSysSuspend() port_suspend() +#define chSysSuspend() { \ + port_suspend(); \ + dbg_check_suspend(); \ +} /** * @brief Lowers the system interrupt priority mask to user level. @@ -107,45 +116,30 @@ * * @special */ -#define chSysEnable() port_enable() +#define chSysEnable() { \ + dbg_check_enable(); \ + port_enable(); \ +} /** * @brief Enters the kernel lock mode. - * @note The use of kernel lock mode is not recommended in the user code, - * it is a better idea to use the semaphores or mutexes instead. - * @see CH_USE_NESTED_LOCKS * * @special */ -#if CH_USE_NESTED_LOCKS || defined(__DOXYGEN__) -#if CH_OPTIMIZE_SPEED || defined(__DOXYGEN__) -#define chSysLock() { \ - if (currp->p_locks++ == 0) \ - port_lock(); \ +#define chSysLock() { \ + port_lock(); \ + dbg_check_lock(); \ } -#endif /* CH_OPTIMIZE_SPEED */ -#else /* !CH_USE_NESTED_LOCKS */ -#define chSysLock() port_lock() -#endif /* !CH_USE_NESTED_LOCKS */ /** * @brief Leaves the kernel lock mode. - * @note The use of kernel lock mode is not recommended in the user code, - * it is a better idea to use the semaphores or mutexes instead. - * @see CH_USE_NESTED_LOCKS * * @special */ -#if CH_USE_NESTED_LOCKS || defined(__DOXYGEN__) -#if CH_OPTIMIZE_SPEED || defined(__DOXYGEN__) -#define chSysUnlock() { \ - if (--currp->p_locks == 0) \ - port_unlock(); \ +#define chSysUnlock() { \ + dbg_check_unlock(); \ + port_unlock(); \ } -#endif /* CH_OPTIMIZE_SPEED */ -#else /* !CH_USE_NESTED_LOCKS */ -#define chSysUnlock() port_unlock() -#endif /* !CH_USE_NESTED_LOCKS */ /** * @brief Enters the kernel lock mode from within an interrupt handler. @@ -159,7 +153,10 @@ * * @special */ -#define chSysLockFromIsr() port_lock_from_isr() +#define chSysLockFromIsr() { \ + port_lock_from_isr(); \ + dbg_check_lock_from_isr(); \ +} /** * @brief Leaves the kernel lock mode from within an interrupt handler. @@ -174,14 +171,20 @@ * * @special */ -#define chSysUnlockFromIsr() port_unlock_from_isr() +#define chSysUnlockFromIsr() { \ + dbg_check_unlock_from_isr(); \ + port_unlock_from_isr(); \ +} /** * @brief IRQ handler enter code. * @note Usually IRQ handlers functions are also declared naked. * @note On some architectures this macro can be empty. */ -#define CH_IRQ_PROLOGUE() PORT_IRQ_PROLOGUE() +#define CH_IRQ_PROLOGUE() { \ + PORT_IRQ_PROLOGUE(); \ + dbg_check_enter_isr(); \ +} /** * @brief IRQ handler exit code. @@ -189,7 +192,10 @@ * @note This macro usually performs the final reschedule by using * @p chSchRescRequiredI() and @p chSchDoRescheduleI(). */ -#define CH_IRQ_EPILOGUE() PORT_IRQ_EPILOGUE() +#define CH_IRQ_EPILOGUE() { \ + dbg_check_leave_isr(); \ + PORT_IRQ_EPILOGUE(); \ +} /** * @brief Standard normal IRQ handler declaration. @@ -211,10 +217,6 @@ extern "C" { #endif void chSysInit(void); void chSysTimerHandlerI(void); -#if CH_USE_NESTED_LOCKS && !CH_OPTIMIZE_SPEED - void chSysLock(void); - void chSysUnlock(void); -#endif /* CH_USE_NESTED_LOCKS && !CH_OPTIMIZE_SPEED */ #ifdef __cplusplus } #endif -- cgit v1.2.3