曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6288|回复: 0
打印 上一主题 下一主题

OS_InitTCBList

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-4-13 23:56:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static  void  OS_InitTCBList (void)
{
    INT8U    i;
    OS_TCB  *ptcb1;
    OS_TCB  *ptcb2;


    OSTCBList     = (OS_TCB *)0;                                          /* TCB 初始化 */

  


    for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* 清TCB优先级表数组 */
        OSTCBPrioTbl = (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;                                                           /*把空闲的TCB链接起来*/
        ptcb1++;
        ptcb2++;
    }
    ptcb1->OSTCBNext = (OS_TCB *)0;                              /* 最后一个TCB*/
    OSTCBFreeList    = &OSTCBTbl[0];               /* OSTCBFreeList 指向头一个空闲 TCB*/

}
说明
所有的任务控制块 OS_TCB 都是放在任务控制块列表数组 OSTCBTbl[] 中的。在 uC/OS-II 初始化时,所有任务控制块 TCB都被链接成单向空任务链表。任务一旦建立,空任务控制块指针 OSTCBFreeList 指向的任务控制块便赋给了该任务,然后OSTCBFreeList 的值调整为指向链表中下一个空的任务控制块。一旦任务被删除,任务控制块就还给空任务链表。在 OSInit()函数中会调用到 OS_InitTCBList() 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 19:57 , Processed in 0.067845 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表