Ready List
2016-02-21 18:40
381 查看
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中移除。
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中移除。
相关文章推荐
- 【转载】优先队列详解
- PHP MySQL Delete From 之 Delete
- 为什么有些人出3倍薪资也挖不走?
- 15-题目1432:叠筐
- 为什么有些人出3倍薪资也挖不走?
- 深入浅出-iOS Block原理和内存中位置
- C++引用
- uC CPU port
- Openstack镜像和密码
- Vim使用技巧——基础
- 骨骼蒙皮动画(SkinnedMesh Animation)的实现
- uC OSIII port
- C++对C的增强
- 303. Range Sum Query - Immutable
- map & keep & map-indexed & keep-indexed
- c与c++不同的总结
- 模拟登陆
- PHP MySQL Update 之 Update
- 场景中材质球和贴图打印
- Leetcode 142