主页 文档 下载 莱特 沙龙 English

RTESM文档
RTEMS精彩应用
RTEMS版权说明
其他RTOS
ARM/DSP专区
AVR/FPGA/PCB
嵌入式文件系统
ARM AVR仿真器DIY
莱特电子工作室
联系我们
 


RTEMS 任务管理指令:优先级与改变模式

作者 Ray

RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray

9.4.9: TASK_SET_PRIORITY- 任务优先级置位

函数原型 :

rtems_status_code rtems_task_set_priority(

rtems_id id,

rtems_task_priority new_priority,

rtems_task_priority *old_priority

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 任务优先级成功置位

RTEMS_INVALID_ID- 无效任务ID标识

RTEMS_INVALID_ADDRESS- 无效的回返参数指针

RTEMS_INVALID_PRIORITY- 无效的任务优先级

描述:

该函数设置ID标识指定任务的优先级。可以通过设置id为RTEMS_SELF来更该当前任务的优先级。当 new_priority不等于RTEMS_CURRENT_PRIORITY 时,指定的任务早先的优先级将存储在在old_priority参数中。 当 new_priority和RTEMS_CURRENT_PRIORITY相同,指定的任务现在的优先级存储在old_priority中。有效的优先级是从1到255的整数。

注意:

如果调用者可以被抢占,而且改变优先级后,有任务的优先级高于当前任务的优先级,那么当前执行的任务可能被抢占。

设定不在本地结点上的全局任务的优先级将会对遥远的结点产生一个改变指定任务优先级的请求。

如果被ID标识指定的任务拥有使用优先级继承算法的二进制信号量,那么任务的优先级不能够被立刻降低。如果任务的优先级立刻被降低,就会产生优先级反转。当任务已释放所有的优先级继承二进信号量的时候,他的优先级的才会降低。无论是否使用优先级继承二进制信号量,任务的优先级都可以提高。

9.4.10: TASK_MODE- 变化现在任务的模式

函数原型:

rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
);

返回值代表的状态:

RTEMS_SUCCESSFUL- 任务模式置位成功地

RTEMS_INVALID_ADDRESS- previous_mode_set是空值

描述:

该函数改变任务的执行模式。任务的执行模式包括可否抢占、timeslicing、异步的信号处理、以及中断等级。为了改变执行模式,必须指定新的模式mode_set和模式掩码mask。

注意:

如果调用者的新模式支持被抢占,而且有任务的优先级高于当前任务的优先级,那么当前执行的任务可能被抢占。

如果抢先被无效,将模式设置成timeslicing也没有意义。希望任务是分时的,那么必须同时设定分时状态位和抢占状态位。

如果一个任务希望获得它的现在执行模式,而不是修改它。可以将该函数的mask值设置成RTEMS_CURRENT_MODE。

如果要暂时屏蔽ASR,任务在调用该函数时可以将mode参数设置成RTEMS_NO_ASR。

任务模式常量和每个模式的对应掩码常量的如下所示:

模式常量                                  掩码常量                              描述

RTEMS_PREEMPT           RTEMS_PREEMPT_MASK       使抢占调度有效

RTEMS_NO_PREEMPT    RTEMS_PREEMPT_MASK       使抢占调度对该任务无效

RTEMS_NO_TIMESLICE RTEMS_TIMESLICE_MASK      使分时无效

RTEMS_TIMESLICE        RTEMS_TIMESLICE_MASK      使分时有效

RTEMS_ASR                   RTEMS_ASR_MASK                  使 ASR 有效

RTEMS_NO_ASR             RTEMS_ASR_MASK                  使 ASR 无效

RTEMS_INTERRUPT_LEVEL(0)   RTEMS_INTERRUPT_MASK   使当前任务能立刻对所有中断产生响应

RTEMS_INTERRUPT_LEVEL(n)   RTEMS_INTERRUPT_MASK   置位中断等级为 n

 

 
嵌入式软硬件设计咨询 • 8位 16位 32位 64位 RISC DSP
主页文章 方案 产品 下载反馈
 
2004 RTEMS.NET 版权所有