博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 信号
阅读量:4194 次
发布时间:2019-05-26

本文共 695 字,大约阅读时间需要 2 分钟。

执行时机: 
系统调用返回,调用信号处理函数。
arm  系统调用返回时,检查并执行信号。
arch/arm/kernel/entry-common.S ret_fast_syscall ->  do_notify_resume -> do_signal 
x86 :
回复用户空间,system_call   nmi   返回用户控件 paranoid
代码:

entry_64.s   system_call -》 do_notify_resume -> do_signal 处理信号 

sigpending 函数:

功能:返回在阻塞期间接收到阻塞信号的集合。
sigprocmask函数:


功能描述:

设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。
进程执行到sigsuspend时,sigsuspend并不会立刻返回,进程处于TASK_INTERRUPTIBLE状态并立刻放弃CPU,等待UNBLOCK(mask之外的)信号的唤醒
。进程在接收到UNBLOCK(mask之外)信号后,调用处理函数,然后把现在的信号集还原为原来的,sigsuspend返回,进程恢复执行。
sigsuspend的整个原子操作过程为:

(1) 设置新的mask阻塞当前进程;

(2) 收到信号,恢复原先mask;

(3) 调用该进程设置的信号处理函数;

(4) 待信号处理函数返回后,sigsuspend返回。
内核线程的信号处理机制:
1. 需要内核线程自己处理, 即每个循环判断sig_pending 是否有信号,如果有信号,则进行相应的信号处理。
如线程 jffs2_garbage_collect_thread

转载地址:http://qtloi.baihongyu.com/

你可能感兴趣的文章
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>