ucos代码阅读(3)
来源:互联网 发布:侠盗无双0.4下载 软件 编辑:程序博客网 时间:2024/09/21 08:16
OS_InitTCBList();
static void OS_InitTCBList (void)
{
INT8U i;
OS_TCB *ptcb1;
OS_TCB *ptcb2;
OS_MemClr((INT8U *)&OSTCBTbl[0], sizeof(OSTCBTbl)); /* Clear all the TCBs */
OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl)); /* Clear the priority table */
ptcb1 = &OSTCBTbl[0];
ptcb2 = &OSTCBTbl[1];
for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) { /* Init. list of free TCBs */
ptcb1->OSTCBNext = ptcb2;
#if OS_TASK_NAME_SIZE > 1
ptcb1->OSTCBTaskName[0] = '?'; /* Unknown name */
ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
#endif
ptcb1++;
ptcb2++;
}
ptcb1->OSTCBNext = (OS_TCB *)0; /* Last OS_TCB */
#if OS_TASK_NAME_SIZE > 1
ptcb1->OSTCBTaskName[0] = '?'; /* Unknown name */
ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
#endif
OSTCBList = (OS_TCB *)0; /* TCB lists initializations */
OSTCBFreeList = &OSTCBTbl[0];
}
这个函数的实质是对着几个全局变量的操作
OSTCBTbl[]数组本来就是一个全局变量,元素是TCB
OSTCBPrioTbl[] 也是一个全局变量
OSTCBList
OSTCBFreeList
首先就是初始化 OSTCBTbl和OSTCBPrioTbl
然后把OSTCBTbl中的元素串成链表(单方向)
接着OSTCBFreeList 指向这个链表的第一个元素,这个变量指向未分配的TCB链表
OSTCBList初始化
- ucos代码阅读(3)
- ucos代码阅读(2)
- ucos代码阅读(4)
- ucos代码阅读(5)
- ucos代码阅读(8)
- ucos代码阅读(9)
- ucos代码阅读(6) 全局变量
- ucos代码阅读(1)
- ucos代码裁剪
- ucos代码裁剪
- 如何更好的阅读代码(3)
- Caffe代码阅读笔记(3)
- DC4C代码阅读(3)——代码目录结构
- uCOS-III阅读,第一天,也就瞎看看
- uCOS-II 代码移植测试
- uCOS:时钟节拍代码追踪
- x265代码阅读(一):cudata.cpp代码阅读
- x264代码阅读笔记3
- System.load 和 System.loadLibrary详解
- 改,乱了
- 入栈与出栈
- Apache 的 httpd.conf 详解
- 正则表达式函数详解
- ucos代码阅读(3)
- 在 Debian 上源码编译和安装 Nginx+PHP+FastCGI+MySQL
- How-to Guide: Perfect Windows Defender Uninstall
- SQLite模糊查找(like)
- VIM 高阶
- CLR线程池的工作者线程
- 写在研究生入学之前
- typedef和#define的区别
- 双击jar包出现:could not find the main class .和could not create the java virtual machine.win7/xp解决方法详解