rt-thread内核对象标志(object.flag)总结
1 前言
在前面介绍rt-thread内核对象时(http://blog.csdn.net/flydream0?viewmode=contents),有介绍到rt-thread内核对象成员flag,但是没有怎么具体介绍他的含意,只是把它当做普通标志来理解,这里特意将此flag提出来总结一下,这也是这篇博文的目的.
首先,内核对象的flag确实是一标志,且是8个位的数据,按位来定义的,那么它到底各个位是怎么定义的呢?答案是用在不同的内核对象时,它的各位定义会有所不同.
从前面的博文中我们可以知道,rt-thread的内核对象有定时器,线程,信号量,互斥锁,事件,邮箱,消息队列,内存堆,设备,模块,这些内核对象都继承了内核对象的成员,其中也就包含了内核对象的flag成员,因此,内核对象成员flag在这些不同的场合是具体不同的含义的,下面总结一下:
2 object.flag在定时器中的含义object.flag在定时器中的各位如下定义:
位01备注bit0RT_TIMER_FLAG_DEACTIVATED:定时器未激活,即初始化值RT_TIMER_FLAG_ACTIVATED:定时器激活,当定时器start后将会置为此状态激活/非激活状态bit1RT_TIMER_FLAG_ONE_SHOT:单次定时器.即定时器时间一到自动失效RT_TIMER_FLAG_PERIODIC:周期定时器.即时间一到,自动时行下一次定时.单次定时器/周期定时器bit2RT_TIMER_FLAG_HARD_TIMER:硬时钟.即采用硬件时钟.RT_TIMER_FLAG_SOFT_TIMER:软件时钟.即采用软件时钟.硬件时钟/软件时钟标志
3 object.flag在线程中的含义线程虽然也继承了内核对象,但是它的数据定义并未直接包含内核对象结构体变量成员,而是直接在线程控制块中包含其成员,如下:
位01备注bit0RT_IPC_FLAG_FIFO:按消息队列先进先出的方式处理.RT_IPC_FLAG_PRIO:按线程优先级的方式处理,即哪个线程的优先级高,则哪个先操作.IPC处理方式
5 其它object.flag在设备,内存堆和内存池中都没有被用到.
object.flag在模块中有用到,bit0被用作带entry point与否标志,之前还没有介绍到RTT模块的内容,这里也就不介绍了,后续我将在专门介绍RTT模块的博文中介绍,敬请关注!
完!