do_irq中调用do_softirq的原因
来源:互联网 发布:云校软件下载 编辑:程序博客网 时间:2024/06/03 05:01
这个是Linux的策略。中断是紧急事务,按理都应该立即处理,不得耽误。从理论上来说,是不应该有softirq这种事物的。但在现实中,如果系统总是保证处理完所有中断才干其它事情,那必然就会长时间阻塞其它子系统和用户态程序。引入softirq就成为工程中一种折中。
但中断毕竟是紧急事务,系统在不繁忙的时候应该尽快处理它,所以才会在do_irq后接着调do_softirq。这里加了判断,在中断嵌套时不能做do_softirq,因为中断嵌套表示系统中断频繁了,不能因为处理中断阻塞其它子系统。所以在通常情况下,中断都是一次处理掉的
中断的下半部机制中,tasklet和软中断都是在do_softirq的调用上被执行的,是在中断上下文中被执行的,其中tasklet不允许在多个处理起上执行。。至于工作队列的方式,她是以另一个线程的方式实现的,初始化时创建,调用时唤醒,其实request_thread_irq是将中断线程化,包括利用定时器实现延时处理,这都不是在中断上下文中,所以在写驱动的时候这几种方式的实现一定要搞清楚。
- do_irq中调用do_softirq的原因
- do_softirq
- do_softirq
- do_IRQ
- 关于do_softirq
- 在CMainFrame::OnCreate中调用SetWindowText无效果的原因
- 揭秘CMD中调用不支持鼠标的原因
- UINavigationController中viewWillAppear不被调用的原因?
- sendBroadcast可以在Service中被调用的原因
- 关于ListView中adapter调用notifyDataSetChanged无效的原因
- 在PreTranslateMessage中调用t总是出错的原因分析
- C++构造函数中不调用虚函数的原因
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结
- iOS中造成dealloc不调用的原因
- ListView中adapter调用notifyDataSetChanged无效的原因
- Rxjava 中 onError 时 doOnTerminate 不调用的原因探索
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结
- Android中ListView的适配器中getView()被重复调用的原因及解决方案.
- Spring 和struts 整合的三种方式
- CSTO沙龙第三期预告:给艺术插上科技的翅膀
- Linux下使用混杂模式抓包(2)
- ZendOptimizer
- Android + NDK + Eclipse 调试
- do_irq中调用do_softirq的原因
- Debug Oracle Procedure
- 25个让Java程序员更高效的Eclipse插件
- 异常在Dos中显示的一些问题……
- J2EE技术规范(八)——JMS(消息,域)
- 设计模式(六)----- 适配器模式(Adapter)----(JAVA版)
- jbpm学习笔记(六)--请假流程的设计(3)
- HttpSession与Hibernate中Session的区别
- 从源码来看auto_ptr的特性