我目前正在忙于内核中的三个 spin_lock 函数。
- 自旋锁
- spin_lock_irq
- spin_lock_irqsave
我只找到了只涵盖其中两个的贡献(包括 Linux 文档)。
然后答案或解释被表述为模棱两可或相互矛盾,甚至包含评论说解释是错误的。这使得很难获得概览。
我很清楚一些基础知识,例如在中断上下文中,简单的 spin_lock() 可能会导致死锁。但我真的很感激关于这个主题的完整图片。
我需要明白:
- 什么时候应该或我们使用哪个版本,什么时候不应该?
- 什么时候不需要使用更安全但不会造成伤害的版本(性能除外)?
- 在特定情况下使用版本的原因是什么?