免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香
打印 上一主题 下一主题

[中断] 线上讨论之linux中断总结分享 [复制链接]

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
11 [报告]
发表于 2011-11-28 14:56 |只看该作者
一、介绍一下线程化中断
二、generic irq抽象出了对控制器的操作与以及对edge or level trigger的处理,那原来__do_IRQ里的哪些代码区别对待了edge-triggered和level-triggered。
三、8259在不能与CPU与交互的情况下是否能锁存住一次edge-triggered中断。
四、举出具体例子,从中断发出方的视度来看中断的整个流程。如果设备是level-triggered,它什么时候撤消中断信号?如果设备是edge-triggered,某一次边沿变化后,它会马上还原为之前的电平信号还是下一次再想中断时才变化?

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
12 [报告]
发表于 2011-11-28 15:13 |只看该作者
回复 7# Godbach

放心,就CU这服务器,点开网页最先出来置顶的帖子,过几秒钟下面帖子才出来。这几秒钟已经足够把人吸引进来了。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
13 [报告]
发表于 2011-11-28 15:27 |只看该作者
回复 11# tempname2
看来tempname2对中断也比较了解啊

说到中断,就不得不说电流处理。
这里并没有深入说明不同的电流类型,本身自己对硬件的了解不是非常到位,怕给大家造成误解。这里就简单说一下内核软件这块的处理流程。

linux内核中断电流类型主要有两种(当然还有一些不常见的类型), 边沿触发中断和电平触发中断,对应的处理程序分别是handle_edge_irq和handle_level_irq。
而不过是handle_edge_irq还是handle_level_irq,最终都会调用handle_IRQ_event,而handle_IRQ_event就会调用具体的中断处理函数,比如e100网卡的e100_intr函数。

中断处理的函数调用关系可以简单总结如下:

do_IRQ-->handle_edge_irq(handle_level_irq)-->handle_IRQ_event-->irqhandler

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
14 [报告]
发表于 2011-11-28 16:30 |只看该作者
回复 13# 瀚海书香

其实怎么跑到ISR的应该是很清晰的,需要理解的是这之前对控制器的操作。Generic IRQ似乎就是抽象出了一种假想的中断控制器,假定它具有某些操作,然后真正硬件控制器驱动组合使用primitive operations来到达期待的效果。但是初学者不好理解假定的细节啊。比如ack方法有什么效果?level-triggered中断是不是先ack控制器,再ack设备?而edge-triggered中断只需要ack控制器?

另外为什么handle_edge_irq里有个循环而handle_level_irq里没有?irq_check_poll的有什么作用最终达成何种效果?handle_edge_irq注释里的一段话:
      This requires to reenable the interrupt inside
      of the loop which handles the interrupts which have arrived while
      the handler was running.


是什么意思?

这些根ULK上描述的__do_IRQ那条路好像已经差不少了,对于像我这样对中断零实战经验的人来说,没有接触过真实发中断设备,中断处理流程又一变再变,恐怕最终只会陷入无限的细节中,对着代码和资料YY了。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
15 [报告]
发表于 2011-11-28 17:12 |只看该作者
回复 14# tempname2

恐怕最终只会陷入无限的细节中,对着代码和资料YY了。


其中防止陷入细节的方法,最后的方法就是不要去考虑细节
像中断处理部分,可以不必深究每一种中断类型的具体实现细节。只要将核心放到handle_edge_irq和handle_level_irq的代码就可以了。

内核中断的处理的确是变化非常的快啊。之前看到很多帖子,都是说Linux不支持中断嵌套,不知道是内核变化的原因,还是帖子的作者说错了。呵呵

这次讨论,也是仅限于2.6.24之后的中断处理(当然了,3.0之后的也不考虑,好像又有些细节变动)

论坛徽章:
0
16 [报告]
发表于 2011-11-28 18:18 |只看该作者
学习一下,围观

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
17 [报告]
发表于 2011-11-28 19:23 |只看该作者
支持瀚海兄的主持

论坛徽章:
0
18 [报告]
发表于 2011-11-28 22:02 |只看该作者
回复 1# 瀚海书香


    中断太专业了 没有中断似乎什么也做不了

论坛徽章:
1
技术图书徽章
日期:2013-09-25 21:06:29
19 [报告]
发表于 2011-11-28 22:04 |只看该作者
回复 1# 瀚海书香


    这包我蛮喜欢的~~

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
20 [报告]
发表于 2011-11-29 07:33 |只看该作者
回复 19# yuloveban
分享自己对中断的理解就有机会得到那个包包哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP