|
事件操作函数
作者 Ray
RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray
15.4: 函数
15.4.1 : EVENT_SEND-向任务发送事件集
函数原型:
rtems_status_code rtems_event_send(
rtems_id id,
rtems_event_set event_in
);
返回值代表的状态:
RTEMS_SUCCESSFUL- 成功发送事件集
RTEMS_INVALID_ID- 无效的任务ID标识
描述:
该函数发送事件集event_in给ID标识指定的任务。如果发送的事件集满足阻塞任务的要求,那么阻塞任务就绪。如果不能满足,那么集合中满足条件的任务将会对阻塞任务等待事件集更新。如果发送对象现在没有等待,那么事件集会被挂起。
注意:
将id设置为RTEMS_SELF,那么事件集发送的对象是调用者本省。
事件集不会被排队。如果同时发送多个,接受不过来的话,后续的事件集将会被丢弃。
该函数调用后可能发生抢占调度
向远端的任务发送事件集,将会产生一个对远端节点的发送请求。
15.4.2 : EVENT_RECEIVE- 接受事件
函数原型 :
rtems_status_code rtems_event_receive(
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set*event_out
);
返回值代表的状态:
RTEMS_SUCCESSFUL- 成功地接受事件
RTEMS_UNSATISFIED- 输入事件不满足条件 (RTEMS_NO_WAIT)
RTEMS_INVALID_ADDRESS- event_out 是空值
RTEMS_TIMEOUT- 等候事件集的时间限制倒了
描述 :
该函数尝试接受 event_in 指定的事件集。 如果 event_in 被设定成 RTEMS_PENDING_EVENTS,
那么将会把所有的挂起事件传递给 event_out 。option_set 参数的 RTEMS_WAIT 和 RTEMS_NO_WAIT
选件是用来叙述任务愿意等候。RTEMS_EVENT_ANY 和 RTEMS_EVENT_ALL option_set参数是用来叙述是否要求所有事件都满足。
如果事件集满足任务要求,那么将满足条件的事件集放入event_out,事件集的挂起态被取消。如果事件集不满足条件,而且
设置了RTEMS_NO_WAIT,那么目前满足条件的事件集子集被放入event_out中。如果召集任务选择等候, 然后它将会对于事件是候补阻塞以为条件。
如果任务需要为指定事件等待一段时间,那么就指定ticks变量。如果该变量设置为RTEMS_NO_TIMEOUT,则表明任务将继续等待。
注意:
该函数只影响在 event_in 中指定的事件。 不符合任何任何一个条件的事件集子集将会被挂起。
如果需要等待一定时间,就需要时钟支持。
|