【发布时间】:2013-07-10 04:44:57
【问题描述】:
我正在开发一个内核模块,它在 softirq(netfilter 预路由挂钩)和用户上下文(在 ioctl 调用中)之间共享数据结构。
阅读此link 后,我知道我需要在修改数据时禁用用户上下文中的软件中断(使用spin_lock_bh 或spin_lock_irqsave)并在对共享数据进行操作后重新启用它们完成。
但是,我不确定是否需要在 softirq 处理函数中获取锁。 我是否也需要在这里抓住锁(使用 spin_lock)?
据我了解,如果与另一个软中断或硬中断共享数据,我只需要在软中断处理程序中使用自旋锁。我的理解正确吗?
【问题讨论】:
标签: c linux-kernel locking netfilter softirq