閱讀712 返回首頁    go 阿裏雲 go 技術社區[雲棲]


網絡子係統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

  上一篇:go Java麵向對象高級--接口的基本概念--------interface、implements
  下一篇:go 網絡子係統2_設備子係統相關的初始化