irq vector
0.0.1. 中断处理过程:
reg value–>irq(int) —> struct irq_desc
1 | |
注:这里的handle_irq不是真正的中断处理函数,而是几大类中断控制器处理函数.
如82599, msi等.
0.0.1.1. `do_IRQ(struct pt_regs *regs)
File: arch/x86/kernel/irq.c
arch/x86/kernel/entry_64.S
will call do_IRQ
1 | |
0.0.1.2. bool handle_irq(unsigned irq, struct pt_regs *regs)
arch/x86/kernel/irq_64.c
1 | |
0.0.1.3. generic_handle_irq_desc
include/linux/irqdesc.h
1 | |
0.0.2. desc里的handle_irq对应哪些函数?
handle_level_irq和handle_edge_irq等
1 | |
0.0.2.1. for example: 8259A
1 | |
0.0.2.1.1. make_8259A_irq
arch/x86/kernel/i8259.c
1 | |
0.0.2.2. irq_set_chip_and_handler
include/linux/irq.h
1 | |
0.0.2.3. irq_set_chip_and_handler_name
kernel/irq/chip.c
1 | |
1 | |
1 | |
irq vector
https://martinbj2008.github.io/2014/07/17/2014-07-17-irq-study/