https://www.bilibili.com/read/cv20785285/
简介
软中断可以在两个位置得到机会执行:
硬中断返回前 irq_exit
中断下半部 Bottom-half Enable后
情景分析
情景1
spin_unlock_bh
__raw_spin_unlock_bh
__local_bh_enable_ip 打开Bottom-half,并让softirq有机会执行
spin_lock_bh
__raw_spin_lock_bh
__local_bh_disable_ip(__RET_IP__, SOFTIRQ_LOCK_OFFSET) 关闭Bottom-half
preempt_count_add
【软定时timerlist】与【进程上下文】存在临界区资源,
SMP可以使用spin_lock_bh与spin_unlock_bh取代spin_lock_irqsave与spin_lock_irqrestore。可提高中断及时响应,过度使用spin_lock_irqsave会导致丢中断。