linux并发控制之中断屏蔽
2014-09-23 11:49
141 查看
在单CPU范围内避免竞态的一个简单方法。
注意:
中断对系统正常运行很重要,长时间屏蔽很危险,所以中断屏蔽后应尽可能快的执行完毕。
宜与自旋锁联合使用。
使用
local_irq_disable()
local_irq_enable()
只能禁止和使能本地CPU的中断,所以不能解决多CPU引发的竞态
local_irq_save(flags)
local_irq_restore(flags)
除了能禁止和使能中断外,还保存和还原目前的CPU中断位信息
local_bh_disable()
local_bh_disable()
如果只是想禁止中断的底半部,这是个不错的选择。
定义于 #include<linux/irqflags.h>
注意:
中断对系统正常运行很重要,长时间屏蔽很危险,所以中断屏蔽后应尽可能快的执行完毕。
宜与自旋锁联合使用。
使用
local_irq_disable()
local_irq_enable()
只能禁止和使能本地CPU的中断,所以不能解决多CPU引发的竞态
local_irq_save(flags)
local_irq_restore(flags)
除了能禁止和使能中断外,还保存和还原目前的CPU中断位信息
local_bh_disable()
local_bh_disable()
如果只是想禁止中断的底半部,这是个不错的选择。
定义于 #include<linux/irqflags.h>
相关文章推荐
- linux并发控制之中断屏蔽
- Linux内核开发之并发控制(四)
- Linux设备驱动之并发控制(1)
- Linux内核开发之并发控制(三)
- Linux设备驱动之并发控制
- linux驱动学习之并发和竞争控制
- linux驱动编程核心理论之并发控制
- linux并发控制之读写自旋锁
- LINUX驱动中的并发控制
- Linux 设备驱动 ====> 并发控制 --- 原子操作
- Linux字符设备驱动程序之并发控制
- linux并发和竞态之中断屏蔽
- Linux 设备驱动 ====> 并发控制 --- 信号量与互斥体
- Linux内核开发之并发控制(一)
- Linux 设备驱动 ====> 并发控制 --- 原子操作
- Linux内核开发之并发控制(实例总结篇)
- Linux 设备驱动 ====> 并发控制 --- 自旋锁
- linux驱动的并发控制和阻塞和非阻塞
- Linux内核开发之并发控制(五)
- linux并发控制之原子操作