**根据时间片轮转调度在同优先级任务中的应用,需要对
任务的TCB进行修改,增加4个属性项:**
1)OSTSLen(时间片初始值)。保存任务建立时给任务分
配时间片的个数。
2)OSTSCurLen(时间片剩余值)。记录了任务运行中还
剩余的时间片个数”-。
3)OSTSPrev(TCB双向链表前驱指针)。用作组成图2
所示的TCB循环链表。
4)OSTSNext(TCB双向链表后继指针)。用作组成图2
所示的TcB循环链表。
OSTimeTick代码部分修改:
void OSTimeTick(void)
{
OS_TCB *ptcb;
OS_TCB *temptcb;
if OS_TICK_STEP_EN > 0
BOOLEAN step;
endif
if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr = 0;
endif
if OS_TIME_TICK_HOOK_EN > 0
OSTimeTickHook(); /* Call user definable hook */
endif
if OS_TIME_GET_SET_EN > 0
OS_ENTER_CRITICAL(); /* Update the 32-bit tick counter */
OSTime++;
OS_EXIT_CRITICAL();
endif
if (OSRunning == OS_TRUE) {
if OS_TICK_STEP_EN > 0
switch (OSTickStepState) { /* Determine whether we need to process a tick */
case OS_TICK_STEP_DIS: /* Yes, stepping is disabled */
step = OS_TRUE;
break;
case OS_TICK_STEP_WAIT: /* No, waiting for uC/OS-View to set ... */
step = OS_FAL