中断屏蔽

1. 中断屏蔽将使得中断与进程之间的并发不再发生;

2. 内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也不再发生;

3. 接口:

local_irq_disable() //屏蔽中断
. . . 
critical section //临界区
. . . 
local_irq_enable() //开中断

4. local_irq_disable()和 local_irq_enable()都只能禁止和使能本 CPU 内的中断, 因此,并不能解决 SMP 多 CPU 引发的竞态。因此,单独使用中断屏蔽通常不是一种值得推荐的避免竞态的方法,它适宜与自旋锁联合使用;

5. 与 local_irq_disable()不同的是,local_irq_save(flags)除了进行禁止中断的操作以外, 还保存目前 CPU 的中断位信息, local_irq_restore (flags) 进行的是与 local_irq_save(flags)相反的操作;

6. 如果只是想禁止中断的底半部,应使用 local_bh_disable(), 使能被 local_bh_disable()禁止的底半部应该调用 local_bh_enable()。

posted on 2024-09-07 12:15  f1engmin11  阅读(6)  评论(0编辑  收藏  举报

导航