μ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所示。本文引用地址:https://www.eepw.com.cn/article/161941.htm
在函数OSTimeDlyResume()、OS_EventTaskRdy()、OS_FlagTaskRdy()以及OSTaskResume()中,在其代码ptcb->OSTCBDly=0后面(下一行)加入0STCBDlyDel(ptcb,OS_Dly_OPT_NONE)。然后在时钟节拍处理函数OSTime Tick()中作适当修改,修改后的伪代码如下:
评论