14.0-uC/OS-III挂起队列

1.当任务等待信号量、 mutex、事件标志组、消息队列时,该任务会被
放入挂起队列。

挂起队列是一个OS_PEND_LIST类型的数据结构,它包含了三部
分内容。
 

 

.NbrEntries 挂起队列中有几个任务。
.TailPtr 指向队列的尾部(最低优先级的任务)
.HeadPtr 指向队列的首部(最高优先级的任务)

2.显示了每个内核对象中的包含了三个相同的部分, 我们把
这三个部分命名为
OS_PEND_OBJ。注意的是,第一个部分“ Type
用于区别这个内核对象的类型:信号量、
mutex、事件标记组、消息
队列。

显示了当内核对象被创建时"Type"部分被设置的值。调试时可
以方便用户识别内核对象的类型。

事实上,挂起队列中不是指向任务的 OS_TCB,而是指向
OS_PEND_DATA

当任务被放入挂起队列时,OS_PEND_DATA结构体被动态地分配到该任务的堆栈中。

这意味着任务堆栈中需有足够的空间用于存储这个结构体。

任务不是直接链接到挂起队列中,而是通过叫做OS_PEND_DATA
的数据结构作为媒介。这个媒介在任务被放入挂起队列中分配到任务
堆栈的。

 

posted @ 2018-07-31 17:03  西贡小傻  Views(228)  Comments(0Edit  收藏  举报