網絡子係統3_do_softirq調用點
//中斷退出時 1.void irq_exit(void) { ... //遞減中斷嵌套深度 sub_preempt_count(IRQ_EXIT_OFFSET); //如果已經退出中斷,並且軟中斷標誌被置位 if (!in_interrupt() && local_softirq_pending()) //執行軟中斷 do_softirq(); ... } //APIC時鍾中斷中 2.void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs) { ... irq_exit(); ... } //重新激活下半部時 3.void local_bh_enable(void) { _local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } static inline void _local_bh_enable_ip(unsigned long ip) { ... if (unlikely(!in_interrupt() && local_softirq_pending())) do_softirq(); ... }
最後更新:2017-04-03 15:21:55