【问题标题】:Synchronisation between process context and timer function进程上下文和定时器函数之间的同步
【发布时间】:2019-03-26 20:15:52
【问题描述】:

我想在进程上下文(具体而言在 queuecommand 函数中)和计时器函数中以原子方式更新数据结构。在进程上下文中,我应该使用spin_lock_bhspin_lock_irq 还是只使用spin_lock

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

【问题讨论】:

    标签: c linux timer linux-kernel spinlock


    【解决方案1】:

    如果我理解正确的话,它是关于timer_list (bottom half context)。那么你的假设是正确的:是的,在进程上下文中使用 spin_lock_bh 和在计时器处理程序中使用 spin_lock 就足够了function of timer_list)。但这只有 如果该锁(和相应的数据结构)仅在上述上下文中使用 是正确的 没有使用它的中断处理程序。如果是这样,您需要例如spin_lock_irq

    另外请记住,您不应该在 spin_lock*-spin_unlock* 中使用可睡眠功能。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2019-06-17
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多