首页
IT
登录
6mi
u
盘
搜
搜 索
IT
usosiii中OS
usosiii中OS
xiaoxiao
2026-06-05
6
#if OS_CFG_ISR_POST_DEFERRED_EN > 0u
/* Deferred ISR Posts ------------------------------ */ /* Lock the scheduler */ #define OS_CRITICAL_ENTER() \ do { \ CPU_CRITICAL_ENTER(); \ OSSchedLockNestingCtr++; \ if (OSSchedLockNestingCtr == 1u) { \ OS_SCHED_LOCK_TIME_MEAS_START(); \ } \ CPU_CRITICAL_EXIT(); \ } while (0) /* Lock the scheduler but re-enable interrupts */ #define OS_CRITICAL_ENTER_CPU_EXIT() \ do { \ OSSchedLockNestingCtr++; \ \ if (OSSchedLockNestingCtr == 1u) { \ OS_SCHED_LOCK_TIME_MEAS_START(); \ } \ CPU_CRITICAL_EXIT(); \ } while (0) /* Scheduling occurs only if an interrupt occurs */ #define OS_CRITICAL_EXIT() \ do { \ CPU_CRITICAL_ENTER(); \ OSSchedLockNestingCtr--; \ if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) { \ OS_SCHED_LOCK_TIME_MEAS_STOP(); \ if (OSIntQNbrEntries > (OS_OBJ_QTY)0) { \ CPU_CRITICAL_EXIT(); \ OS_Sched0(); \ } else { \ CPU_CRITICAL_EXIT(); \ } \ } else { \ CPU_CRITICAL_EXIT(); \ } \ } while (0) #define OS_CRITICAL_EXIT_NO_SCHED() \ do { \ CPU_CRITICAL_ENTER(); \ OSSchedLockNestingCtr--; \ if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) { \ OS_SCHED_LOCK_TIME_MEAS_STOP(); \ } \ CPU_CRITICAL_EXIT(); \ } while (0)
#else
/* Direct ISR Posts -------------------------------- */ #define OS_CRITICAL_ENTER() CPU_CRITICAL_ENTER() #define OS_CRITICAL_ENTER_CPU_EXIT() #define OS_CRITICAL_EXIT() CPU_CRITICAL_EXIT() #define OS_CRITICAL_EXIT_NO_SCHED() CPU_CRITICAL_EXIT() #endif
转载请注明原文地址: https://ju.6miu.com/read-1310210.html
最新回复
(
0
)