免费注册 查看新帖 |

Chinaunix

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

[内核同步] 关中断或关软中断后,禁抢占是否必要 [复制链接]

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
41 [报告]
发表于 2012-06-12 05:26 |只看该作者
回复 39# readerplus


    晕倒...... 这个不是加不加的问题, 是想知道究竟行不行的问题吧...

论坛徽章:
0
42 [报告]
发表于 2012-06-12 09:57 |只看该作者
回复 41# captivated
不加当然可以了,前面讨论那么多,不已经共识了嘛。但加上后语意更明确,是一种好的编程习惯
其实内核文档中也有关于是否加不加的说明,可是看了半天也没看出为什么一定要加。

   

论坛徽章:
0
43 [报告]
发表于 2012-06-12 10:01 |只看该作者
附上文档说明

Note that you do not need to explicitly prevent preemption if you are holding
any locks or interrupts are disabled, since preemption is implicitly disabled
in those cases.

But keep in mind that 'irqs disabled' is a fundamentally unsafe way of
disabling preemption - any spin_unlock() decreasing the preemption count
to 0 might trigger a reschedule. A simple printk() might trigger a reschedule.
So use this implicit preemption-disabling property only if you know that the
affected codepath does not do any of this. Best policy is to use this only for
small, atomic code that you wrote and which calls no complex functions.

论坛徽章:
0
44 [报告]
发表于 2012-06-13 13:01 |只看该作者
spin_irq_lock 没有仔细研究过,我一直以来的理解这个函数就两个功能
* 禁止本地中断抢占
*禁止其他CPU抢占
所以 这里的preempt_disable
当CPU1 上有进程A 进程B B的优先级高于A。 CPU2唤醒CPU1上的进程B。这里至少可以保证CPU1上A进程必须执行完了 才能调用进程B。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP