μC/OS―II實(shí)時(shí)操作系統(tǒng)中任務(wù)延時(shí)的研究與改進(jìn)
2.2 從任務(wù)延時(shí)鏈表中刪除任務(wù)控制塊
當(dāng)任務(wù)延時(shí)完成、任務(wù)延時(shí)恢復(fù)、任務(wù)恢復(fù)、任務(wù)刪除時(shí),需要把任務(wù)從任務(wù)延時(shí)鏈表中刪除。使用函數(shù)OSTCBDlyDel(),此函數(shù)無返回,形參有兩個(gè):第一個(gè)為任務(wù)控制塊指針,第二個(gè)為操作類型opt,函數(shù)原型為void OSTCBDlyDel(OS_TCB*ptcb,INT8U opt)。opt的取值為:OS_Dly_OPT_NONE(正常執(zhí)行,從任務(wù)延時(shí)鏈表刪除,加入任務(wù)鏈表),OS_Dly_OPT_DEL(把任務(wù)從任務(wù)延時(shí)鏈表刪除,OSTaskDel()函數(shù)使用)。函數(shù)OSTCBDlyDel的流程如圖1所示。本文引用地址:http://m.butianyuan.cn/article/161941.htm
在函數(shù)OSTimeDlyResume()、OS_EventTaskRdy()、OS_FlagTaskRdy()以及OSTaskResume()中,在其代碼ptcb->OSTCBDly=0后面(下一行)加入0STCBDlyDel(ptcb,OS_Dly_OPT_NONE)。然后在時(shí)鐘節(jié)拍處理函數(shù)OSTime Tick()中作適當(dāng)修改,修改后的偽代碼如下:
評(píng)論