进程上下文和定时器函数之间的同步

Synchronisation between process context and timer function

我想在进程上下文(具体来说是在 queuecommand 函数中)和计时器函数中自动更新数据结构。在流程上下文中,我应该使用 spin_lock_bhspin_lock_irq 还是只使用 spin_lock

根据我的理解,我们应该在queuecommand(进程上下文)中使用spin_lock_bh,而在定时器函数中只使用spin_lock。我说得对吗?

如果我没理解错的话,大概是timer_list (bottom half context)。那么你的假设是正确的:是的,在进程上下文和[=中使用spin_lock_bh就足够了计时器处理程序中的 27=]spin_locktimer_listfunction)。但这只有 如果锁(和相应的数据结构)仅在提到的上下文中使用[=48] =] 没有使用它中断处理程序。如果是这样,你需要例如spin_lock_irq

另请记住,您不应在 spin_lock*-spin_unlock*.

中使用休眠函数

Linux 内核源代码中有很多示例,例如: