- 论坛徽章:
- 22
|
handle_irq_event是怎么被调用的基本弄清了。原来现在irq的handle都是设置成了相应的电平处理函数:Cscope tag: handle_edge_irq
# line filename / context / line
1 397 include/linux/irq.h <<GLOBAL>>
extern void handle_edge_irq(unsi...int irq, struct irq_desc *desc);
2 189 arch/x86/kernel/apb_timer.c <<apbt_setup_irq>>
__irq_set_handler(adev->irq, handle_edge_irq, 0, "edge");
3 1322 arch/x86/kernel/apic/io_apic.c <<ioapic_register_intr>>
hdl = fasteoi ? handle_fasteoi_irq : handle_edge_irq;
4 1575 arch/x86/kernel/apic/io_apic.c <<setup_timer_IRQ0_pin>>
irq_set_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq,
5 2725 arch/x86/kernel/apic/io_apic.c <<lapic_register_intr>>
irq_set_chip_and_handler_name(irq, &lapic_chip, handle_edge_irq,
6 3269 arch/x86/kernel/apic/io_apic.c <<setup_msi_irq>>
irq_set_chip_and_handler_name(irq, chip, handle_edge_irq, "edge");
7 3387 arch/x86/kernel/apic/io_apic.c <<arch_setup_dmar_msi>>
irq_set_chip_and_handler_name(irq, &dmar_msi_type, handle_edge_irq,
8 3458 arch/x86/kernel/apic/io_apic.c <<arch_setup_hpet_msi>>
irq_set_chip_and_handler_name(irq, chip, handle_edge_irq, "edge");
9 3546 arch/x86/kernel/apic/io_apic.c <<arch_setup_ht_irq>>
handle_edge_irq, "edge");
10 4032 arch/x86/kernel/apic/io_apic.c <<pre_init_apic_IRQ0>>
irq_set_chip_and_handler_name(0, &ioapic_chip, handle_edge_irq,
11 187 drivers/gpio/gpio-ep93xx.c <<ep93xx_gpio_irq_type>>
在cat /proc/interrupts可以看出相应的电平处理,
~$ cat /proc/interrupts
CPU0 CPU1
0: 1578868 0 IO-APIC-edge timer
1: 12290 0 IO-APIC-edge i8042
8: 0 0 IO-APIC-edge rtc0
11: 63 0 IO-APIC-fasteoi acpi
12: 231360 0 IO-APIC-edge i8042
14: 20396 0 IO-APIC-edge pata_sis
15: 0 0 IO-APIC-edge pata_sis
17: 53146 0 IO-APIC-fasteoi sata_sis
18: 2225 0 IO-APIC-fasteoi hda_intel
19: 96256 0 IO-APIC-fasteoi eth1
20: 0 0 IO-APIC-fasteoi ohci_hcd:usb2
21: 36561 0 IO-APIC-fasteoi ohci_hcd:usb3
22: 54956 0 IO-APIC-fasteoi ehci_hcd:usb1
41: 903103 0 PCI-MSI-edge radeon
42: 56 0 PCI-MSI-edge hda_intel
................ |
|