1 OSIntNesting
OS_EXT INT8U OSIntNesting; /* Interrupt nesting level */
中断嵌套深度
OSIntNesting 加1,表示中断嵌套深了一层。
中断服务程序在运行的时候,又来了 一个中断,打断了现在的中断服务程序,去执行,更高一级的中断服务程序了。
2 OSLockNesting
OS_EXT INT8U OSLockNesting; /* Multitasking lock nesting level */
给调度器上锁
用于禁止任务调度
给调度器上锁函数OSSchedlock()(程序清单L3.9)用于禁止任务调度,直到任务完成后调用给调度器开锁函数OSSchedUnlock()为止
3 TCB
TCB ---- Task Control Block ,TCB 任务控制块
4 OSTCBFreeList
指向任务控制块的地址
指向空闲链表的表头
5 Ctx
context switch 上下文切换 任务切换
6 OSCtxSwCtr
OS_EXT INT32U OSCtxSwCtr; /* Counter of number of context switches */
整个操作系统的所有任务累计切换的次数
应该是用来记录的吧,作为系统性能分析使用。
7 OSTCBCtxSwCtr
某个任务的被调度次数。
该任务被调用执行了一次 这个值就加1 .
8 OSPrioHighRdy
OS_EXT INT8U OSPrioHighRdy; /* Priority of highest priority task */
优先级最高的就绪任务的优先级
9 OSPrioCur
OS_EXT INT8U OSPrioCur; /* Priority of current task*/
当前正在执行任务的优先级
10 OSTCBHighRdy
OS_EXT OS_TCB *OSTCBHighRdy; /* Pointer to highest priority TCB R-to-R */
11 OSTCBPrioTbl[ ] 数组
Tbl ---- table
#define OS_LOWEST_PRIO 63 //最低的优先级,数字越大,优先级越低
OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1]; /* Table of pointers to created TCBs */
OSTCBPrioTbl 是一个数组,该数组存放的是 指针。
指针指向已经创建的TCB任务块
OSTCBPrioTbl 是任务优先级指针表
OS_TCBInit 函数中会对 OSTCBPrioTbl[ ] 赋值
12 ucos中 是 一个优先级 只能 对应一个任务吗 ?
通过 OSTaskCreate( ) ,可以看出一个优先级 只能对应一个任务。
上图 代码 来自:OSTaskCreate( )函数
其中包含:OS_TCBInit( )函数
13 OSTaskStkInit 任务堆栈初始化
14 OSPrioHighRdy
具有最高优先级的任务的优先级数值
OS_EXT INT8U OSPrioHighRdy; /* Priority of highest priority task */
15 OSTCBCur
指向当前任务块
OS_EXT OS_TCB *OSTCBCur; /* Pointer to currently running TCB */
16 OSRdyTbl[ ]
任务就绪表
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
#define OS_LOWEST_PRIO 63
#define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1) /* Size of ready table */
OS_EXT INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; /* Table of tasks which are ready to run */
17 OSRdyGrp
任务就绪组
OS_EXT INT8U OSRdyGrp;
18 就绪链表的指针 : OS_TCBList
<嵌入式实时操作系统μC OS原理与实践 [卢有亮编著].pdf > Page44