- 论坛徽章:
- 0
|
回复 #35 zx_wing 的帖子
> 我也记得我以前看过是在哪儿调用set_irq_handle什么的把handle_fasteoi_irq作为callback设上的,但现在就是找不到了,只在powerpc的代码里看到有。我再找找
抄一段笔记:
===========
setup_IO_APIC()
然后,setup_IO_APIC() > setup_IO_APIC_irqs()
init_IO_APIC_traps()
两个函数设置中断和陷阱。
其中setup_IO_APIC_irqs() > ioapic_register_intr() :
1275 static void ioapic_register_intr(int irq, int vector, unsigned long trigger)
1276 {
1277 if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) ||
1278 trigger == IOAPIC_LEVEL)
1279 set_irq_chip_and_handler_name(irq, &ioapic_chip,
1280 handle_fasteoi_irq, "fasteoi");
1281 else
1282 set_irq_chip_and_handler_name(irq, &ioapic_chip,
1283 handle_edge_irq, "edge");
1284 set_intr_gate(vector, interrupt[irq]);
1285 }
(从代码可以看出,对IO APIC上的中断来说,由于调用ioapic_register_intr时指定了IOAPIC_AUTO,所以
其chip都是handle_fasteoi_irq)。
> 既然连南桥的PCI设备都可以发MSI,那么IOAPIC可以发MSI也就不奇怪了。
明白,谢谢! |
|