看uc/os2的任务级调试器函数OS_Sched()有一处不明白,特来请教各位大侠! OS_Sched() { OS_ENTER_CRITICAL(); if((OSIntNesting==0)&&(OSLockNesting==0)) (1) { 查找优先级更高的任务并切换; } OS_EXIT_CRITICAL(); } (1)处的OSIntNesting是中断的嵌套层数,OSLockNesting是给调度器上锁的层数,这条语句的意思是在没有给调度器上锁且并非中断调用任务级调度函数OS_Sched()时,在进行高优先级的任务切换.我不明白的地方是:任务级的调度函数怎么可能在中断中调用?在这里作这样的判断是不是多此一举? 本人刚接触嵌入式操作系统不久,还请大侠们不吝赐教!先谢过! |