__do_softirq
-> softirq_handle_begin
static inline void softirq_handle_begin(void)
{
__local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET);
}
static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt)
{
preempt_count_add(cnt);
barrier();
}
softirq_handle_begin 通过调用 __local_bh_disable_ip 进入软中断上下文