9

随想录(rtos中的signal)

 3 years ago
source link: https://blog.csdn.net/feixiaoxing/article/details/84592734
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

随想录(rtos中的signal)

费晓行 2018-11-28 21:41:19 717
分类专栏: 随想录

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    从2012-2017年这段时间,自己对rtos很痴迷。市面上能学习的rtos,一般都会把代码拿过来看一看,学一学怎么实现的。要说现在linux和rtos,基本上应用场景还是分的很清楚的。中低频率的soc,但是对实时性要求很高的场景一般用rtos,其他则用linux。然而很多场景下,人们希望复用linux的代码,这就存在一些问题了。signal就是其中一个。

    由于较早就比较熟悉rtthread,所以这次在github上看到rtos下signal的实现方法,还是觉得有一些吃惊。原来代码的地址在这,https://github.com/RT-Thread/rt-thread/blob/master/src/signal.c。相信有些经验的同学都可以看懂。

1、注册signal函数

rt_signal_install函数

2、发送signal

rt_thread_kill

3、具体signal发送过程

_signal_deliver

    注意,这里判断如果接受signal的一方是其他thread,那么需要修改thread的入参,即thread再次唤醒的时候,会先进入_signal_entry。

4、进入_signal_entry,具体处理信号的函数

rt_thread_handle_sig

5、信号返回的部分代码

6、其他信号相关的函数

a,rt_signal_mask

b,rt_signal_unmask

c,rt_signal_wait


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK