免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zx_wing

《Interrupt in Linux(硬件篇)》(1楼有更新 2008.5.3) [复制链接]

论坛徽章:
0
发表于 2008-05-05 20:04 |显示全部楼层
原帖由 minifish 于 2008-5-5 08:59 发表


我第一次听anthony说的,我以为你知道来源的。

哎哟,还是熟人哦。
那你私下msn我就好了嘛,在这里challenge,说错很丢人

论坛徽章:
0
发表于 2008-05-05 15:23 |显示全部楼层
顶一个....................................

论坛徽章:
0
发表于 2008-05-05 12:30 |显示全部楼层
原帖由 minifish 于 2008-5-5 09:13 发表

多谢!
但是对于pending两个的说法,我还是有点不理解。
你说的这种情况,我觉得实际上是只pending了一个“待处理”中断,因为另一个已经在处理了。
From SDM 8.8.4:
IF more than one interrupt is gene ...

对,ISR、IRR对应bit都为1。
不能光从名字上推断一个寄存器的功能,虽然大部分时间名字代表功能,但不一定能代表所有功能。

论坛徽章:
0
发表于 2008-05-05 11:06 |显示全部楼层
顶了再看~~

论坛徽章:
0
发表于 2008-05-05 09:13 |显示全部楼层
原帖由 bluesky_jxc 于 2008-5-3 11:29 发表
copy from 8259 spec:
"Interrupt Request Register (IRR): 8-bit register which
contains the levels requesting an interrupt to be acknowledged.
The highest request level is reset from
the IRR wh ...

多谢!
但是对于pending两个的说法,我还是有点不理解。
你说的这种情况,我觉得实际上是只pending了一个“待处理”中断,因为另一个已经在处理了。
From SDM 8.8.4:
IF more than one interrupt is generated with the same vector number, the local APIC can set the bit for the vector both in the IRR and ISR.
就是这句话说的不太清楚。
假设这样子,eflags.if=0
然后同样的vector来了三个中断,那么IRR和ISR是怎样的状态呢?
都是1,那么ISR的状态跟它本身代表的含义是不符的,或者这是一种特殊情况?

论坛徽章:
0
发表于 2008-05-05 08:59 |显示全部楼层
原帖由 zx_wing 于 2008-5-3 12:08 发表

>>对于APIC,IRR和ISR都在LAPIC中,所以只会在LAPIC中pending。
>>见x86 spec 3A卷第八章8.8.4节


我第一次听anthony说的,我以为你知道来源的。

论坛徽章:
0
发表于 2008-05-04 13:01 |显示全部楼层

回复 #62 jazy333 的帖子

不会吧,我试了两个PDF reader都是对的。

论坛徽章:
0
发表于 2008-05-04 12:58 |显示全部楼层
您的PDF在我这里看都是倒影!!!

论坛徽章:
0
发表于 2008-05-03 12:08 |显示全部楼层
原帖由 minifish 于 2008-5-3 09:08 发表
牛蛙的超牛作品,顶!
顺便问一个弱智问题:
你说的那个IMR置位的情况下,仍然会IRR有效,是从哪里看到的?
还有对于Edge中断,IO-APIC和Local APIC各自会pending一个,这个是从哪里看到的?

>>还有对于Edge中断,IO-APIC和Local APIC各自会pending一个,这个是从哪里看到的?
对于APIC,IRR和ISR都在LAPIC中,所以只会在LAPIC中pending。
见x86 spec 3A卷第八章8.8.4节

论坛徽章:
0
发表于 2008-05-03 11:29 |显示全部楼层

回复 #59 minifish 的帖子

copy from 8259 spec:
"Interrupt Request Register (IRR): 8-bit register which
contains the levels requesting an interrupt to be acknowledged.
The highest request level is reset from
the IRR when an interrupt is acknowledged. (Not affected
by IMR.)"

edge中断在下面情况下才会pending2个:
1.当前某一个edge中断在服务,这个时候IRR清空,ISR置位
2.还没有服务完成(未写EOI),同一个中断发生,IRR置位

这个时候,IRR和ISR就同时置位。

在使用AEOI的时候也可能会出现这种情形,在第一个INTA和第二个INTA之间
如果有同类型的中断发生,也会出现同时两个寄存器置位。
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP