Ready List

来源:互联网 发布:网络攻防大赛 常见思路 编辑:程序博客网 时间:2024/06/07 16:16


typedef  struct  os_rdy_list         OS_RDY_LIST;

struct  os_rdy_list {
    OS_TCB              *HeadPtr;                           /* Pointer to task that will run at selected priority     */
    OS_TCB              *TailPtr;                           /* Pointer to last task          at selected priority     */
    OS_OBJ_QTY           NbrEntries;                        /* Number of entries             at selected priority     */
};

OS_RDY_LIST               OSRdyList[OS_CFG_PRIO_MAX];   



void  OS_RdyListInit (void):
    将OSRdyList[] 初始化成如上图所示。

void  OS_RdyListInsert (OS_TCB  *p_tcb):
    将p_tcb的prio对应的bitmap中的位置1,如果等于OSPrioCur,OS_RdyListInsertTail(p_tcb);,否则OS_RdyListInsertHead(p_tcb);

void  OS_RdyListInsertHead (OS_TCB  *p_tcb):
    将p_tcb插入到对应的优先级的列表的开头。

void  OS_RdyListInsertTail (OS_TCB  *p_tcb):
    将p_tcb插入到对应的优先级的列表的最后。

void  OS_RdyListMoveHeadToTail (OS_RDY_LIST  *p_rdy_list):
    将p_rdy_list最前面的TCB移到最后面。(时间片轮询时用到)

void  OS_RdyListRemove (OS_TCB  *p_tcb):
    将p_tcb从ready list中移除。


0 0
原创粉丝点击