UCOS-iii 就绪表有OSPrioTbl[ ],OSRdyList[prio]两个表。
就绪队列包含两个数据结构:
位映像表保存了哪个优先级中有任务待运行,
优先级列表中包含了这该优先级下等待运行的任务。
如果对应的优先级任务进入就绪状态,就将该任务添加到OSRdyList[prio]中。
OSRdyList[prio]的类型是一个结构体,结构体内包含三个元素,分别是
OS_TCB *HeadPtr:指向相同优先级的任务的TCB表头。
OS_TCB *TailPtr :指向相同优先级的任务的TCB表尾。
OS_OBJ_QTY NbrEntries:进入就绪状态的该优先级任务的数量。
相同优先级的TCB表用双向链表链接。
任务就绪表中OSRdyList[0] 一般为中断保留,最后一个为TaskIdle空任务保留。可能还有统计任务,等其他任务。
OS_RdyListInit() | 初始化就绪列表为空 |
OS_RdyListInsert() | 插入一个TCB到就绪列表 |
OS_RdyListInsertHead() | 插入一个TCB到就绪列表的头部 |
OS_RdyListInsertTail() | 插入一个TCB到就绪列表的尾部 |
OS_RdyListMoveHeadToTail() | 将TCB从列表的头部移到尾部 |
OS_RdyListRemove() | 将TCB从就绪列表中移除 |