免费注册 查看新帖 |

Chinaunix

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

[中断] local_irq_disable使用的疑问【已解决】 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-04 11:59 |只看该作者 |倒序浏览
本帖最后由 jiufei19 于 2014-03-04 13:24 编辑

《Linux内核设计与实现》Robert Love著一书中的第6.7.1一节中关于local_irq_disable()函数说了这么一段话,我没有理解,请大家解惑:

“如果在调用local_irq_disable()例程之前已经禁止了中断,那么该例程往往会带来潜在的危险;同样相应的local_irq_enable()例程也存在潜在危险,...”

上面这句话中对local_irq_enable()的说明比较容易明白,但是前面对于local_irq_disable的说明就有点不明白了,为啥之前已经禁止了中断后,再禁止会有危险呢?

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
2 [报告]
发表于 2014-03-04 12:17 |只看该作者
本帖最后由 asuka2001 于 2014-03-04 12:18 编辑

回复 1# jiufei19

1.   local_irq_disable()

2.   local_irq_disable()

3.   local_irq_enable()

4.   oops,退出原子上下文了

5.  local_irq_enable()

本来的预期是 1到5之间均为原子上下文的!所以,你得:

1. local_irq_disable()

2. local_irq_save()

3. local_irq_restore()

4. 中断仍为关闭状态

5. local_irq_enable()


   

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
3 [报告]
发表于 2014-03-04 13:23 |只看该作者

RE: local_irq_disable使用的疑问

回复 2# asuka2001


明白了, 感谢解答!原来我没有理解的原因只是看到再次disable后对自己的确没有影响,没有考虑到一旦enable后会影响外层被嵌套者的是否继续屏蔽中断的问题。再次感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP