uCOS-II内核学习之任务调度
实现任务切换,需要调用函数OSSched()。
OSSched()程序代码如下所示:void OSSched (void)
{
INT8U y;
OS_ENTER_CRITICAL();
if ((OSLockNesting | OSIntNesting) == 0) //(1)
{
y = OSUnMapTbl[OSRdyGrp]; //(2)
OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
if (OSPrioHighRdy != OSPrioCur) //(3)
{
OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy]; //(4)
OSCtxSwCtr++; //(5)
OS_TASK_SW(); //(6)
}
}
OS_EXIT_CRITICAL();
}
其基本实现原理大致是先找出优先级最