|
Signal 函数
作者 Ray
RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray
16.4: 函数
16.4.1 : SIGNAL_CATCH-建立 ASR
函数原型:
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode
);
返回值代表的状态:
RTEMS_SUCCESSFUL- 总是成功的
描述:
该函数为调用者建立一个异步信号处理例程 (ASR) 。 asr_handler 参数指明了 ASR 的入囗函数。如果 asr_handler
是空值,那么ASR无效,所有相关的信号将会被清除。 被送到和有病的 ASR 的一个任务的任何信号被丢弃。 mode参数描述了 ASR 的执行模式。模式的设定可以参考任务执行模式一节。当转入
ASR 时,执行模式将按照mode制定的模式执行。
16.4.2 : SIGNAL_SEND-向任务发送信号
函数原型:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
);
返回值代表的状态:
RTEMS_SUCCESSFUL- 信号成功地送出
RTEMS_INVALID_ID- 任务 ID标识无效
RTEMS_INVALID_NUMBER- 信号集为空
RTEMS_NOT_DEFINED- ASR无效
描述:
该函数向ID标识的任务发送信号。signal_set参数包含的发送的信号集合。
如果调用者发送信号给无效的 ASR,那么将返回RTEMS_NOT_DEFINED。如果接受的ASR有效但是被屏蔽掉了,那么信号捕捉后会被挂起,直到ASR重新有效。如果接受者
ASR 有效且使能,那么信号捕捉后,接受任务执行时就会执行 ASR。
注意:
向任务发送信号不会改变任务的执行状态。任务不会因为异步信号而阻塞(要不怎么叫做异步信号),也不会因为向阻塞任务发送异步信号而唤醒该任务。
将信号发送给远端的任务会向远端节点产生对应的信号发送请求。
|