主页 文档 下载 莱特 沙龙 English

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


单调周期调度函数

作者 Ray

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

20.3 操作

20.3.1 : 创建单调周期任务周期

rtems_rate_monotonic_create 函数为调用任务创建单调周期。RTEMS将从空闲周期控制块 (PCB)链表中分派一个PCB。RTEMS使用该数据结构控制单调周期。RTEMS还为周期分配ID,供其他API控制单调周期。

函数原型:

rtems_status_code rtems_rate_monotonic_create(

rtems_name name,

rtems_id *id

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 成功地产生单调时期

RTEMS_INVALID_NAME- 无效任务名字

RTEMS_TOO_MANY- 产生太多周期

20.3.2 : 周期管理

rtems_rate_monotonic_period函数用于设定周期,来让任务按照设定好的周期周期性的运行。rtems_rate_monotonic_period函数执行后, 任务将按照固定的周期运行。运行情况如下所示:

•  如Id对应的单调周期已经启动,当rtems_rate_monotonic_period函数执行后,调用者将会被阻塞,直到到达下次运行的周期。

•  如果Id对应的单调周期没有运行,那么函数将会初始化周期,并且立即返回。

•  如果单调周期在任务调用rtems_rate_monotonic_period 函数前到期,那么初始化周期后,然后函数返回超时。

如果函数的周期被设定为 RTEMS_PERIOD_STATUS , 那么函数返回当前周期的状态。

rtems_status_code rtems_rate_monotonic_period(

rtems_id id,

rtems_interval length

);

返回值代表的状态 :

RTEMS_SUCCESSFUL- 周期成功地初始化

RTEMS_INVALID_ID- 无效的单调周期 ID 标识

RTEMS_NOT_OWNER_OF_RESOURCE- 周期不是调用者创建的。

RTEMS_NOT_DEFINED- 单调周期没有初始化

RTEMS_TIMEOUT- 周期已经过时

20.3.4 : 取消一个周期

rtems_rate_monotonic_cancel 函数用来停止单调周期 , 要想重新启动周期 , 可以使用 rtems_rate_monotonic_period 函数。

20.4.3 : RATE_MONOTONIC_CANCEL- 取消一个时期

函数原型 :

rtems_status_code rtems_rate_monotonic_cancel(

rtems_id id

);

返回值代表的状态 :

RTEMS_SUCCESSFUL- 成功地取消

RTEMS_INVALID_ID- 无效 ID 标识

RTEMS_NOT_OWNER_OF_RESOURCE- 单调周期不是由此函数所在任务创建。

20.3.5 : 删除单调周期

rtems_rate_monotonic_delete 函数是用来删除单调周期。如果该周期正在运行的并且没有期满 , 那么周期将先自动地取消。周期删除时PCB也会被释放。周期可以被所有知道ID的任务删除。

 

函数原型:

rtems_status_code rtems_rate_monotonic_delete(

rtems_id id

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 成功删除

RTEMS_INVALID_ID- 无效周期ID标识

20.3.6 : RATE_MONOTONIC_GET_STATUS-获得单调周期状态

函数原型:

rtems_status_code rtems_rate_monotonic_get_status(

rtems_id id,

rtems_rate_monotonic_period_status *status

);

返回值代表的状态 :

RTEMS_SUCCESSFUL- 时期成功地初始化

RTEMS_INVALID_ID- 无效 ID 标识

RTEMS_INVALID_ADDRESS- 无效 status 地址

 

描述 :

函数返回周期的信息 , 并且存储在 status 中 , rtems_rate_monotonic_period_status 定义如下 :

typedef struct {

rtems_rate_monotonic_period_states state;

rtems_unsigned32 ticks_since_last_period;

rtems_unsigned32 ticks_executed_since_last_period;

} rtems_rate_monotonic_period_status;

如果周期的状态是 RATE_MONOTONIC_INACTIVE , 那么 ticks_since_last_period 和 ticks_executed_since_last_period 将会被设定成 0 。否则ticks_since_last_period将会包含自从rtems_rate_monotonic_period 调用函数以后的时钟滴哒数目。此外,ticks_executed_since_last_period将描述自从 rtems_rate_monotonic_period 函数后周期的所有者执行的时间。

 

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