新手上路
- 积分
- 28
- 金钱
- 28
- 注册时间
- 2016-1-5
- 在线时间
- 9 小时
|
2金钱
p_list = &OSTickListDly;
p_tcb = p_list->TCB_Ptr;
if (p_tcb != (OS_TCB *)0)
{
p_tcb->TickRemain--;
while (p_tcb->TickRemain == 0u)
{
if (p_tcb->TaskState == OS_TASK_STATE_DLY)
{
p_tcb->TaskState = OS_TASK_STATE_RDY;
OS_RdyListInsert(p_tcb); /* Insert the task in the ready list */
}
else if (p_tcb->TaskState == OS_TASK_STATE_DLY_SUSPENDED)
p_tcb->TaskState = OS_TASK_STATE_SUSPENDED;
p_list->TCB_Ptr = p_tcb->TickNextPtr;
p_tcb = p_list->TCB_Ptr; /* Get 'p_tcb' again for loop */
if (p_tcb == (OS_TCB *)0)
break;
else
p_tcb->TickPrevPtr = (OS_TCB *)0;
}
}
这是对延迟任务处理的代码,只对延迟链表里的第一个任务的剩余节拍减1,不是应该对所有延迟任务的剩余节拍都减1吗?像上面那样处理,会造成链表后面的任务实际延迟时间变长?
|
|