spin_lock_irq和spin_lock_irqsave
2013-07-03 23:18
232 查看
http://hi.baidu.com/dayanhn/item/f52242ca3a16fa12505058e7
看了这篇文章差不多明白了一点,就是加入两个CPU同时执行两组spin_lock_irq1和spin_lock_irq2
假如spin_unlock_irq1先执行,那么被spin_lock_irq2保护的区域实际上中断已经打开。
但是我有点没搞明白,irqsave为什么可以保证两个irqrestore不会互相干涉,是否因为cli/sti是针对中断管理器,只有一个。
而irqsave保存的是EFLAGS寄存器,每个CPU有一个,所以不同CPU的不同进程执行的结果只影响自身。
但是这也解释不同,因为irqsave把CPU1的EFLAGS寄存器中断位置零了,而CPU2却没有,不是照样可以进入死锁吗?
恩,还要搞搞清楚。
看了这篇文章差不多明白了一点,就是加入两个CPU同时执行两组spin_lock_irq1和spin_lock_irq2
假如spin_unlock_irq1先执行,那么被spin_lock_irq2保护的区域实际上中断已经打开。
但是我有点没搞明白,irqsave为什么可以保证两个irqrestore不会互相干涉,是否因为cli/sti是针对中断管理器,只有一个。
而irqsave保存的是EFLAGS寄存器,每个CPU有一个,所以不同CPU的不同进程执行的结果只影响自身。
但是这也解释不同,因为irqsave把CPU1的EFLAGS寄存器中断位置零了,而CPU2却没有,不是照样可以进入死锁吗?
恩,还要搞搞清楚。
相关文章推荐
- spin_lock, spin_lock_irq and spin_lock_irqsave
- Linux内核spin_lock、spin_lock_irq、spin_lock_irqsave
- Linux内核spin_lock、spin_lock_irq 和 spin_lock_irqsave
- spin_lock、spin_lock_irq、spin_lock_irqsave区别【转】
- 哪些情况该使用它们spin_lock到spin_lock_irqsave
- 从spin_lock到spin_lock_irqsave
- [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
- request_irq()、free_irq(),以及spin_lock_irqsave和spin_lock区别
- Linux内核spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
- mutex and spin_lock_irq
- spin_lock_irqsave与spin_lock_irq
- spin_lock_irq和spin_lock_irqsave区别
- raw_spin_lock_irqsave
- spin_lock_irqsave()中的flags初始化
- 调用spin_lock_irqsave(&chip->lock,flags); 的下层实现是什么?
- Linux内核spin_lock与spin_lock_irq分析
- 嵌入式 Linux内核spin_lock与spin_lock_irq以及spin_lock_irqsave分析
- 从spin_lock到spin_lock_irqsave
- spin_lock、spin_lock_irq、spin_lock_irqsave区别
- [理解] 为什么我的spin_lock_irqsave()没有锁住时钟中断?