712
技術社區[雲棲]
網絡子係統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