免费注册 查看新帖 |

Chinaunix

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

为什么我的spin_lock_irqsave()没有锁住时钟中断? [复制链接]

论坛徽章:
0
15 [报告]
发表于 2009-04-21 19:51 |只看该作者

回复 #14 eexplorer 的帖子

查了一下kernel source, commit 59f9415ffb9759e950d775f4c400f747b332cc02.

这个patch里会用do_one_initcall()来call module->init() function, do_one_initcall()会check local irq status, 如果loca irq 被关掉的话,它会打开

论坛徽章:
0
14 [报告]
发表于 2009-04-21 18:18 |只看该作者
原帖由 epegasus 于 2009-4-21 16:43 发表

确实,spin_lock_irqsave在单处理器什么都不做.
不过local_irq_save和cli怎么也没用了?
我没看jiffies,我直接看我的还能否输入.


UP下,关了中断,cat /proc/interrupts输出有变化吗,即中断数在增加么?

论坛徽章:
0
13 [报告]
发表于 2009-04-21 17:56 |只看该作者
哪里理解错了呢?
奇怪~

论坛徽章:
0
12 [报告]
发表于 2009-04-21 16:43 |只看该作者
原帖由 richardhesidu 于 2009-4-21 16:31 发表

我的是p4双核,加spin_lock_irqsave或是cli,而没有spin_unlock_irqrestore,sti,会有一个bug信息。不过不会死机。spin_is_locked()显示加锁成功。

而且在正常情况下,视乎也不会关时钟中断。
我在spin_ ...

确实,spin_lock_irqsave在单处理器什么都不做.
不过local_irq_save和cli怎么也没用了?
我没看jiffies,我直接看我的还能否输入.

论坛徽章:
0
11 [报告]
发表于 2009-04-21 16:31 |只看该作者
原帖由 epegasus 于 2009-4-21 16:16 发表
我也试过了,cli,local_irq_save
都不行,而且是在真实机上,会不会是因为在进程上下文的原因?
对中断不了解...

我的是p4双核,加spin_lock_irqsave或是cli,而没有spin_unlock_irqrestore,sti,会有一个bug信息。不过不会死机。spin_is_locked()显示加锁成功。

而且在正常情况下,视乎也不会关时钟中断。
我在spin_lock_irqsave和spin_unlock_irqrestore之前测试jiffies是否增加,如果没有就继续loop。如果关闭中断,系统就会死机,但实际上并没有死机,而且jiffies值在增加。

论坛徽章:
0
10 [报告]
发表于 2009-04-21 16:16 |只看该作者
我也试过了,cli,local_irq_save
都不行,而且是在真实机上,会不会是因为在进程上下文的原因?
对中断不了解...

论坛徽章:
0
9 [报告]
发表于 2009-04-21 11:02 |只看该作者
原帖由 new_learner 于 2009-4-20 13:50 发表


uname -a 结果:

Linux localhost.localdomain 2.6.18 #1 Sat Jul 19 13:06:00 EDT 2008 i686 i686 i386 GNU/Linux


装的vmware虚拟机,不是SMP。


没用过虚拟机,也没有UP的机子。可以在UP的物理机子上试一下。。。

论坛徽章:
0
8 [报告]
发表于 2009-04-21 09:54 |只看该作者
2楼的是对的.PC上的系统时间是放在RTC中的.ULK上讲到了.
但是没关中断就不知道什么问题,而且还引入了虚拟机,估计还要看看虚拟化了.
如果中断关掉了应该你的键盘都不能输入才对.
<系统虚拟化-原理与实现>不错,可以上是虚拟化中的<LKD>

论坛徽章:
0
7 [报告]
发表于 2009-04-20 16:04 |只看该作者
原帖由 richardhesidu 于 2009-4-20 15:27 发表
dmesg里一点错误提示都没有吗?

在insmod my_spin_lock.ko 时,dmesg有这样一句:
my_spin_lock: module license 'unspecified' taints kernel.

因为我代码里没有加入MODULE_LICENSE("GPL");
加入以后再编译insmod,
还是没有禁掉时钟中断

论坛徽章:
0
6 [报告]
发表于 2009-04-20 15:27 |只看该作者
dmesg里一点错误提示都没有吗?
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP