免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2101 | 回复: 6
打印 上一主题 下一主题

[中断] disable_irq使用疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-08 10:48 |只看该作者 |倒序浏览
在linux里面,disable_irq的功能有两个:关闭中断和等待中断返回。但是在非中断服务函数里面,“等待中断返回”是没有意义的。。它是不可以在中断执行的时候执行它的。。那这么函数的这个功能一般哪有用呢?

论坛徽章:
0
2 [报告]
发表于 2013-05-08 11:47 |只看该作者
等待中断返回是在smp的情况下,up的情况下sunchronize_irq是空函数

论坛徽章:
0
3 [报告]
发表于 2013-05-08 11:49 |只看该作者
这个函数的目的应该是防止程序和中断处理程序争用资源吧。所以disable_irq,并等待其它cpu上的中断处理程序结束

论坛徽章:
0
4 [报告]
发表于 2013-05-08 15:42 |只看该作者
disable_irq禁止一条指定的中断线号,调用的时候要保证所有已经开始执行的中断处理程序全部退出,内核不支持中断嵌套,不然这个函数的处理会变的很复杂。主要用在一些持有内核锁的情况下,防止产生死锁,就禁止中断线。

论坛徽章:
0
5 [报告]
发表于 2013-05-21 15:24 |只看该作者
回复 3# aweii


    可是在当前CPU运行的程序,可以关闭其它CPU的中断吗?

论坛徽章:
0
6 [报告]
发表于 2013-05-22 14:04 |只看该作者
好像不能关闭其他CPU的中断,但是可以禁止中断源发出中断。

内核对每个中断都有一个对应的描述符,在想要禁止的中断描述符的状态置上DISABLED标志,这样即使中断源无法禁止,内核收到这个中断后可以忽略它。

回复 5# mingzhi5288


   

论坛徽章:
0
7 [报告]
发表于 2013-05-22 14:05 |只看该作者
disable_irq是禁止中断控制器上的指定的中断线,也就是禁止向所有CPU传递这个中断信号,那么其它CPU上的该中断信号也就关闭啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP