请教各位:signal_pending()之返回值-ERESTARTSYS的作用
看了网上对signal_pending()之返回值-ERESTARTSYS的解释,额,还是有点迷糊,因此特来请教各位,希望各位赐教,不胜感激!1、以下是从网上找到的解释:
2、以下是我的理解+猜想:
正常的系统调用:
①用户程序
②软中断 ,陷入内核
③执行系统调用
夹杂着信号的系统调用:
①用户程序
②软中断,陷入内核
③产生信号,执行信号处理函数
④信号执行完成,返回用户态
⑤通过判断signal_pending()之返回值,发现系统调还未执行,接着再次进入内核态执行系统调用
3、我的问题:
①上述我的理解是否正确?
②我记得我之前在网上看到一个帖子,现在我找不到了,他表达的意思是:从内核态返回用户态的末尾才会“顺手”执行信号处理函数。这句话的意思正确嘛?
③如果网友的说法是正确的,那我就更迷糊了:既然都已经执行信号处理函数了,为什么在此之前不执行系统调用(这时正好还在内核态,否则还要重新进入内核态),何必多此一举呢?
感谢各位拉。
希望大神前来指教 去买块开发板写些例程学的更快些,很多学术问题在开发中根本碰不到。
页:
[1]