gpt4 book ai didi

c - 为什么 tasklist_lock 使用 write_lock_irq 而不是 write_lock?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:30 59 4
gpt4 key购买 nike

在 Linux 内核中,读/写自旋锁用于同步访问任务列表。然而,read_(un)lock 用于读取,而 write_(un)lock_irq 用于写入。为什么写锁定时需要关闭中断?

最佳答案

对于曾经在 IRQ 上下文中使用过的锁,IRQ 在持有时必须被禁用。但是有不同的方法可以实现这一目标。

(我描述的是自旋锁,读/写锁在这方面是一样的)

  • spin_[un]lock 不要禁用 IRQ。仅当您知道它们已被禁用时才使用它们(例如在中断处理程序中)。
  • spin_[un]lock_irq 禁用/启用 IRQ。仅当您知道它们在调用该函数之前未被禁用时才使用它们。
  • sping[un]lock_irq[save|restore] - 禁用 IRQ,然后返回到之前的状态。无论 IRQ 状态如何都可以使用(成本较低)。

我猜你看到的差异是由于不同的调用上下文,而不是读/写差异。

关于c - 为什么 tasklist_lock 使用 write_lock_irq 而不是 write_lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719439/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com