linux内核中有每个自旋锁的原始变体,我想知道它的用法吗?例如:
raw_spin_lock()raw_spin_lock_irqsave()等。

最佳答案

spin_lock*函数与raw_spin_lock*函数的功能相同,此外,启用锁调试后(CONFIG_DEBUG_LOCK_ALLOC),对锁操作执行一些其他的运行时检查,例如死锁检查。这些检查由lockdep子系统执行。

通常,应尽可能使用 spin_lock*函数

仅在极棘手的锁定策略的极少数情况下,当lockdep会产生错误警告时,才可以使用raw_spin_lock*函数。

同样,为了减少内存使用或性能原因,raw_*函数可能比普通函数更可取。但这应该是实际的时间/空间测量,反射(reflect)出使用这些优化所获得的重大 yield 。

10-08 13:45