首先是内核中断的分类,这里只是根据proc/interrupts下显示的中断进行分类,主要包含外部中断和IPI中断
cat proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
1: 107049 104452 77919 106593 17651 2993 2558 3417 GICv3 59 Level r4p0_bcevt_timer
2: 340336 310429 188422 253369 39242 16601 7743 12236 GICv3 30 Edge arch_timer
3: 0 0 0 0 0 0 0 0 GICv3 26 Edge arch_timer
5: 1 0 0 0 0 0 0 0 GICv3 35 Level sprd_serial1
6: 18 0 0 0 0 0 0 0 GICv3 43 Level 70500000.i2c
7: 54 0 0 0 0 0 0 0 GICv3 44 Level 70600000.i2c
8: 8175 0 0 0 0 0 0 0 GICv3 46 Level 70800000.i2c
9: 309 0 0 0 0 0 0 0 GICv3 47 Level 70900000.i2c
11: 0 0 0 0 0 0 0 0 GICv3 82 Level sprd_dma
12: 60761 0 0 0 0 0 0 0 GICv3 92 Level mmc0
13: 0 0 0 0 0 0 0 0 GICv3 89 Level mmc1
14: 5 0 0 0 0 0 0 0 GICv3 90 Level mmc2
15:

本文详细介绍了Linux内核中断中的外部中断和IPI(核间中断)的工作原理。外部中断通常由硬件设备如网卡触发,通过IOAPIC和LAPIC传递到目标CPU进行处理。IPI中断在SMP系统中用于CPU间通信,通过APIC_ICR和APIC_ICR2控制器发送中断请求。文章还探讨了中断处理流程及中断统计程序的实现难点。
最低0.47元/天 解锁文章
2447

被折叠的 条评论
为什么被折叠?



