RT-Thread API参考手册
3.1.1
嵌入式实时操作系统
|
信号接口 更多...
结构体 | |
struct | siginfo_node |
信号控制块 更多... | |
函数 | |
rt_sighandler_t | rt_signal_install (int signo, rt_sighandler_t handler) |
信号安装 更多... | |
void | rt_signal_mask (int signo) |
信号阻塞 更多... | |
void | rt_signal_unmask (int signo) |
解除信号阻塞 更多... | |
int | rt_signal_wait (const rt_sigset_t *set, rt_siginfo_t *si, rt_int32_t timeout) |
等待信号 更多... | |
int | rt_thread_kill (rt_thread_t tid, int sig) |
信号的发送 更多... | |
信号接口
软中断信号(signal,又简称为信号)用来通知线程发生了异步事件。在软件层次上是对中断机制的一种模拟, 在原理上,一个线程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是线程间通信机制中唯一的 异步通信机制,一个线程不必通过任何操作来等待信号的到达,事实上,线程也不知道信号到底什么时候到达, 线程之间可以互相通过调用 kill 发送软中断信号。
收到信号的线程对各种信号有不同的处理方法。处理方法可以分为三类:
rt_sighandler_t rt_signal_install | ( | int | signo, |
rt_sighandler_t | handler | ||
) |
信号安装
如果线程要处理某一信号,那么就要在线程中安装该信号。安装信号主要 用来确定信号值及线程针对该信号值的动作之间的映射关系,即线程将要处理 哪个信号;该信号被传递给线程时,将执行何种操作。
signo | 信号值(只有 SIGUSR1 和 SIGUSR2 是开放给用户使用的) |
handler | 信号值的处理。可以忽略该信号(参数设为 SIG_IGN); 可以采用系统默认方式处理信号 (参数设为 SIG_DFL);也可以自己实现 处理方式 (参数指定一个函数地址)。 |
void rt_signal_mask | ( | int | signo | ) |
信号阻塞
该函数将阻塞指定的信号。
signo | 指定的信号值 |
void rt_signal_unmask | ( | int | signo | ) |
int rt_signal_wait | ( | const rt_sigset_t * | set, |
rt_siginfo_t * | si, | ||
rt_int32_t | timeout | ||
) |
等待信号
该函数将等待 set 信号的到来,如果没有等到这个信号,则把线程给挂起来, 直到等到这个信号或者等待时间超过指定的超时时间 timeout。
set | 指定等待的信号值 |
si | 等待的信号句柄 |
timeout | 指定的超时时间 |
int rt_thread_kill | ( | rt_thread_t | tid, |
int | sig | ||
) |