μC/OS―II實時操作系統中任務延時的研究與改進

2.2 從任務延時鏈表中刪除任務控制塊
當任務延時完成、任務延時恢復、任務恢復、任務刪除時,需要把任務從任務延時鏈表中刪除。使用函數OSTCBDlyDel(),此函數無返回,形參有兩個:第一個為任務控制塊指針,第二個為操作類型opt,函數原型為void OSTCBDlyDel(OS_TCB*ptcb,INT8U opt)。opt的取值為:OS_Dly_OPT_NONE(正常執行,從任務延時鏈表刪除,加入任務鏈表),OS_Dly_OPT_DEL(把任務從任務延時鏈表刪除,OSTaskDel()函數使用)。函數OSTCBDlyDel的流程如圖1所示。本文引用地址:http://www.104case.com/article/161941.htm
在函數OSTimeDlyResume()、OS_EventTaskRdy()、OS_FlagTaskRdy()以及OSTaskResume()中,在其代碼ptcb->OSTCBDly=0后面(下一行)加入0STCBDlyDel(ptcb,OS_Dly_OPT_NONE)。然后在時鐘節拍處理函數OSTime Tick()中作適當修改,修改后的偽代碼如下:
評論