diff --git a/include/rttypes.h b/include/rttypes.h index f082fa0b61..fa84df1b1e 100644 --- a/include/rttypes.h +++ b/include/rttypes.h @@ -184,7 +184,7 @@ struct rt_spinlock #define _SPIN_UNLOCK_DEBUG_OWNER(lock) RT_UNUSED(lock) #endif /* RT_DEBUGING_SPINLOCK */ -#ifdef RT_USING_DEBUG +#ifdef RT_DEBUGING_CRITICAL #define _SPIN_LOCK_DEBUG_CRITICAL(lock) \ do \ { \ @@ -197,11 +197,11 @@ struct rt_spinlock (critical) = (lock)->critical_level; \ } while (0) -#else /* !RT_USING_DEBUG */ +#else /* !RT_DEBUGING_CRITICAL */ #define _SPIN_LOCK_DEBUG_CRITICAL(lock) RT_UNUSED(lock) #define _SPIN_UNLOCK_DEBUG_CRITICAL(lock, critical) do {critical = 0; RT_UNUSED(lock);} while (0) -#endif /* RT_USING_DEBUG */ +#endif /* RT_DEBUGING_CRITICAL */ #define RT_SPIN_LOCK_DEBUG(lock) \ do \ diff --git a/src/Kconfig b/src/Kconfig index 1fd1b4b0bc..fc5b59938f 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -239,6 +239,12 @@ menuconfig RT_USING_DEBUG bool "Enable spinlock debugging" depends on RT_USING_SMP default n + + config RT_DEBUGING_CRITICAL + bool "Enable critical level tracing" + depends on RT_USING_SMP + default y if RT_USING_SMART + default n endif menu "Inter-Thread communication" diff --git a/src/scheduler_mp.c b/src/scheduler_mp.c index efec82f303..ef5a3ee935 100644 --- a/src/scheduler_mp.c +++ b/src/scheduler_mp.c @@ -1056,7 +1056,7 @@ void rt_sched_post_ctx_switch(struct rt_thread *thread) pcpu->current_thread = thread; } -#ifdef RT_USING_DEBUG +#ifdef RT_DEBUGING_CRITICAL static volatile int _critical_error_occurred = 0; @@ -1083,14 +1083,14 @@ void rt_exit_critical_safe(rt_base_t critical_level) rt_exit_critical(); } -#else +#else /* !RT_DEBUGING_CRITICAL */ void rt_exit_critical_safe(rt_base_t critical_level) { return rt_exit_critical(); } -#endif +#endif /* RT_DEBUGING_CRITICAL */ RTM_EXPORT(rt_exit_critical_safe); /** diff --git a/src/scheduler_up.c b/src/scheduler_up.c index 289a30a58f..822d4a8046 100644 --- a/src/scheduler_up.c +++ b/src/scheduler_up.c @@ -451,7 +451,7 @@ void rt_sched_remove_thread(struct rt_thread *thread) rt_hw_interrupt_enable(level); } -#ifdef RT_USING_DEBUG +#ifdef RT_DEBUGING_CRITICAL static volatile int _critical_error_occurred = 0; @@ -482,14 +482,14 @@ void rt_exit_critical_safe(rt_base_t critical_level) rt_exit_critical(); } -#else +#else /* !RT_DEBUGING_CRITICAL */ void rt_exit_critical_safe(rt_base_t critical_level) { rt_exit_critical(); } -#endif +#endif/* RT_DEBUGING_CRITICAL */ RTM_EXPORT(rt_exit_critical_safe); /**