新闻  |   论坛  |   博客  |   在线研讨会
rtems:构建任务属性
tongxin | 2009-04-12 21:52:49    阅读:766   发布文章

RTEMS版权所有,转载请注明来源www.rtems.net,作者ray@rtems
%A 9.2.9: 构建任务属性集合
%A
%A 任务的属性集是通过对制定位进行位运算实现。在RTEMS中预定义了下面的任务属性:
%A
%A RTEMS_NO_FLOATING_POINT-不使用浮点协处理器(默认)
%A
%A RTEMS_FLOATING_POINT-使用数值协处理器
%A
%A RTEMS_LOCAL-本地任务(默认)
%A
%A RTEMS_GLOBAL-全局任务(可以在多个处理器间切换)
%A
%A 上面给出的各个属性是互斥的(也就是正交的单位向量),因此,可以使用按位的或运算和算术加法运算实现属性的叠加。一般来说,RTEMS会为任务初始化缺省的任务属性集合。但是一个训练有素程序员应该为他创建的任务设定初始值。如果的确想照搬系统的默认选项,将任务属性集合赋值为 RTEMS_DEFAULT_ATTRIBUTES。
%A
%A 下面的例子是为一个本地使用数字协处理器的任务初始化attribute_set。
%A
%A attribute_set =RTEMS_FLOATING_POINT
%A
%A 或 : attribute_set =RTEMS_LOCAL|RTEMS_FLOATING_POINT 。
%A
%A 因为 RTEMS_LOCAL是默认的选项,所以attribute_set叁数能被设定成 RTEMS_FLOATING_POINT就可以了。 如果任务是全局的的并且用了数值的协处理器,那么就应该写成
%A
%A attribute_set = RTEMS_GLOBAL|RTEMS_FLOATING_POINT 。
%A
%A 9.2.10: 任务的执行模式和掩码
%A
%A RTEMS中任务的执行模式指的是任务在创建后的运行属性,执行模式通常都对应于一个掩码。同任务的属性一样,执行模式也是通过逻辑的位运算初始化的。任务的执行模式以及对应的掩码如下:
%A
%A 执行模式           模式掩码          模式描述
%A
%A RTEMS_PREEMPT       RTEMS_PREEMPT_MASK    开启抢占式调度
%A
%A RTEMS_NO_PREEMPT     RTEMS_PREEMPT_MASK    屏蔽抢占式调度
%A
%A RTEMS_NO_TIMESLICE    RTEMS_TIMESLICE_MASK    使时间片timeslicing调度失效
%A
%A RTEMS_TIMESLICE                  RTEMS_TIMESLICE_MASK    使时间片timeslicing算法有效
%A
%A RTEMS_ASR                              RTEMS_ASR_MASK       开启异步处理ASR
%A
%A RTEMS_NO_ASR                       RTEMS_ASR_MASK       屏蔽ASR处理
%A
%A RTEMS_INTERRUPT_LEVEL(0) RTEMS_INTERRUPT_MASK 开启所有的中断(任务能被对所有中断产生相应)
%A
%A RTEMS_INTERRUPT_LEVEL(n) RTEMS_INTERRUPT_MASK    任务的中断水平为n
%A
%A 任务的执行模式分量是正交的单位向量, 因此可以使用逻辑或运算和算术加法运算对执行模式赋值。虽然RTEMS会为任务分配默认的执行模式,但是最好还是由程序员自己对执行状态进行操作。如果希望使用默认的状态,可以使用RTEMS_DEFAULT_MODES和掩码 RTEMS_ALL_MODE_MASKS。
%A
%A 下面的例子中使用rtems_task_mode指令将任务中断等级设置成3,而且使它成为不可剥夺的。执行模式设置成RTEMS_INTERRUPT_LEVEL(3)| RTEMS_NO_PREEMPT ,掩码应该设定成 RTEMS_INTERRUPT_MASK| RTEMS_NO_PREEMPT_MASK。
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客