![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
ucos 里OSTCBFreeList 10
UCOS里OS_TCBInit函数中语句OS_TCB*ptcb;ptcb=OSTCBFreeList;if(ptcb!=(OS_TCB*)0){。。。。。}-------...
UCOS 里OS_TCBInit 函数中语句
OS_TCB *ptcb;
ptcb = OSTCBFreeList;
if (ptcb != (OS_TCB *)0) {。。。。。
}
------------------------------------------------------------------------
(OSTCBFreeList是一个地址变量,在void OS_InitTCBList (void)里
for (i = 0; i < (OS_HIGHEST_PRIO + 1); i++) {
OSTCBPrioTbl[i] = (OS_TCB *)0;
}
ptcb1 = &OSTCBTbl[0];
ptcb2 = &OSTCBTbl[1];
for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++)
{ ptcb1->OSTCBNext = ptcb2;
ptcb1++;
ptcb2++;
}
ptcb1->OSTCBNext = (OS_TCB *)0;
OSTCBFreeList = &OSTCBTbl[0];
}也就是说OSTCBFreeList是OSTCBTbl[0]的地址,这个地址的数据是(OS_TCB *)0。
----------------------------------------------------------------------------------------
这就不明白ptcb != (OS_TCB *)0究竟是个什么意思了? 展开
OS_TCB *ptcb;
ptcb = OSTCBFreeList;
if (ptcb != (OS_TCB *)0) {。。。。。
}
------------------------------------------------------------------------
(OSTCBFreeList是一个地址变量,在void OS_InitTCBList (void)里
for (i = 0; i < (OS_HIGHEST_PRIO + 1); i++) {
OSTCBPrioTbl[i] = (OS_TCB *)0;
}
ptcb1 = &OSTCBTbl[0];
ptcb2 = &OSTCBTbl[1];
for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++)
{ ptcb1->OSTCBNext = ptcb2;
ptcb1++;
ptcb2++;
}
ptcb1->OSTCBNext = (OS_TCB *)0;
OSTCBFreeList = &OSTCBTbl[0];
}也就是说OSTCBFreeList是OSTCBTbl[0]的地址,这个地址的数据是(OS_TCB *)0。
----------------------------------------------------------------------------------------
这就不明白ptcb != (OS_TCB *)0究竟是个什么意思了? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询