Kar*_*uru 2 rtos interrupt linux-kernel spinlock
我最近从http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2下载了linux源代码.我在linux-2.6.34.1\Documentation文件夹中的spinlocks.txt文件中遇到了以下段落.
"这确实意味着如果你有一些代码可以做到
cli();
.. critical section ..
sti();
Run Code Online (Sandbox Code Playgroud)
和另一个序列
spin_lock_irqsave(flags);
.. critical section ..
spin_unlock_irqrestore(flags);
Run Code Online (Sandbox Code Playgroud)
然后它们不是互斥的,关键区域可以在两个不同的CPU上同时发生.这本身很好,但关键区域最好对不同的东西至关重要(即它们不能相互踩踏)."
如果某些代码使用cli()/ sti()并且相同代码的其他部分使用spin_lock_irqsave(flags)/ spin_unlock_irqrestore(flags),它们如何影响?
这里的关键部分是"在两个不同的CPU上 ".一些背景:
cli/sti围绕关键部分,以防止IRQ处理程序弄乱的东西了.spin_lock_irqsave()与spin_unlock_irqrestore()被发明.| 归档时间: |
|
| 查看次数: |
1004 次 |
| 最近记录: |