在Linux内核中有每个自旋锁的原始变体,我想知道它的用法?例如:
raw_spin_lock(),raw_spin_lock_irqsave()等。
raw_spin_lock(),raw_spin_lock_irqsave()等。
spin_lock
变体映射到非RT的raw_spin_lock
变体,而如果CONFIG_PREEMPT_RT
被设置,则它们映射到可以睡眠的rt_spin_lock
。spin_lock*
函数与raw_spin_lock*
函数相同,只是在启用锁调试(CONFIG_DEBUG_LOCK_ALLOC)时,会执行一些额外的运行时检查,例如检查死锁等锁操作。这些检查由lockdep
子系统执行。spin_lock*
函数。lockdep
可能产生虚假警告时,才可以使用raw_spin_lock*
函数。raw_*
函数。但应该实际测量时间/空间,反映使用这些优化带来的重大收益。
PREEMPT_RT
情况似乎在另一个答案中有描述。有什么问题吗? - Tsyvarev