我想在进程上下文(具体来说是queuecommand函数)和计时器函数中自动更新数据结构。在过程上下文中,我应该使用spin_lock_bh
还是spin_lock_irq
还是仅使用spin_lock
?
据我了解,我们应该在队列命令(进程上下文)中使用spin_lock_bh
,在计时器函数中仅使用spin_lock
。我说得对吗?
答案 0 :(得分:2)
如果我理解正确,那就是关于timer_list
(bottom half context)的内容。那么您的假设是正确的:是的,在计时器上下文中使用 spin_lock_bh
和 spin_lock
处理程序 ({{1}中的function
)。但这仅是 ,只要该锁 (以及相应的数据结构)仅在提到的上下文中使用 没有使用它的中断处理程序 。如果是这样,您需要timer_list
。
还请记住,您不应该在spin_lock_irq
-spin_lock*
内使用可睡眠功能。
Linux内核源代码中有很多示例,例如: