rtems;:单调周期调度函数
20.3 操作
%A 20.3.1 : 创建单调周期任务周期
%A
%A rtems_rate_monotonic_create 函数为调用任务创建单调周期。RTEMS将从空闲周期控制块 (PCB)链表中分派一个PCB。RTEMS使用该数据结构控制单调周期。RTEMS还为周期分配ID,供其他API控制单调周期。
%A
%A 函数原型:
%A
%A rtems_status_code rtems_rate_monotonic_create(
%A
%A rtems_name name,
%A
%A rtems_id *id
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功地产生单调时期
%A
%A RTEMS_INVALID_NAME- 无效任务名字
%A
%A RTEMS_TOO_MANY- 产生太多周期
%A 20.3.2 : 周期管理
%A
%A rtems_rate_monotonic_period函数用于设定周期,来让任务按照设定好的周期周期性的运行。rtems_rate_monotonic_period函数执行后, 任务将按照固定的周期运行。运行情况如下所示:
%A
%A • 如Id对应的单调周期已经启动,当rtems_rate_monotonic_period函数执行后,调用者将会被阻塞,直到到达下次运行的周期。
%A
%A • 如果Id对应的单调周期没有运行,那么函数将会初始化周期,并且立即返回。
%A
%A • 如果单调周期在任务调用rtems_rate_monotonic_period 函数前到期,那么初始化周期后,然后函数返回超时。
%A
%A 如果函数的周期被设定为 RTEMS_PERIOD_STATUS , 那么函数返回当前周期的状态。
%A
%A rtems_status_code rtems_rate_monotonic_period(
%A
%A rtems_id id,
%A
%A rtems_interval length
%A
%A );
%A
%A 返回值代表的状态 :
%A
%A RTEMS_SUCCESSFUL- 周期成功地初始化
%A
%A RTEMS_INVALID_ID- 无效的单调周期 ID 标识
%A
%A RTEMS_NOT_OWNER_OF_RESOURCE- 周期不是调用者创建的。
%A
%A RTEMS_NOT_DEFINED- 单调周期没有初始化
%A
%A RTEMS_TIMEOUT- 周期已经过时
%A 20.3.4 : 取消一个周期
%A
%A rtems_rate_monotonic_cancel 函数用来停止单调周期 , 要想重新启动周期 , 可以使用 rtems_rate_monotonic_period 函数。
%A 20.4.3 : RATE_MONOTONIC_CANCEL- 取消一个时期
%A
%A 函数原型 :
%A
%A rtems_status_code rtems_rate_monotonic_cancel(
%A
%A rtems_id id
%A
%A );
%A
%A 返回值代表的状态 :
%A
%A RTEMS_SUCCESSFUL- 成功地取消
%A
%A RTEMS_INVALID_ID- 无效 ID 标识
%A
%A RTEMS_NOT_OWNER_OF_RESOURCE- 单调周期不是由此函数所在任务创建。
%A 20.3.5 : 删除单调周期
%A
%A rtems_rate_monotonic_delete 函数是用来删除单调周期。如果该周期正在运行的并且没有期满 , 那么周期将先自动地取消。周期删除时PCB也会被释放。周期可以被所有知道ID的任务删除。
%A
%A
%A
%A 函数原型:
%A
%A rtems_status_code rtems_rate_monotonic_delete(
%A
%A rtems_id id
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功删除
%A
%A RTEMS_INVALID_ID- 无效周期ID标识
%A 20.3.6 : RATE_MONOTONIC_GET_STATUS-获得单调周期状态
%A
%A 函数原型:
%A
%A rtems_status_code rtems_rate_monotonic_get_status(
%A
%A rtems_id id,
%A
%A rtems_rate_monotonic_period_status *status
%A
%A );
%A
%A 返回值代表的状态 :
%A
%A RTEMS_SUCCESSFUL- 时期成功地初始化
%A
%A RTEMS_INVALID_ID- 无效 ID 标识
%A
%A RTEMS_INVALID_ADDRESS- 无效 status 地址
%A
%A
%A
%A 描述 :
%A
%A 函数返回周期的信息 , 并且存储在 status 中 , rtems_rate_monotonic_period_status 定义如下 :
%A
%A typedef struct {
%A
%A rtems_rate_monotonic_period_states state;
%A
%A rtems_unsigned32 ticks_since_last_period;
%A
%A rtems_unsigned32 ticks_executed_since_last_period;
%A
%A } rtems_rate_monotonic_period_status;
%A
%A 如果周期的状态是 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 函数后周期的所有者执行的时间。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。