【发布时间】:2011-11-17 14:53:13
【问题描述】:
我正在编写一个提供(虚拟)块设备的 linux 内核模块(因此不执行实际的硬件 IO)。
目前我正在使用 spin_lock_irqsave / spin_unlock_irqrestore 来处理锁。
只有一个函数在非进程上下文中运行,这就是块设备的make_request函数。
使用 spin_lock_bh / spin_unlock_bh 处理锁是否安全?我想简单的 spin_lock 是不够的,因为 make_request 不是由进程运行的(这是正确的吗?)。
提前致谢。
【问题讨论】:
-
一点更新:我使用了 irqsave / restore 类型的锁,在某些系统上,irq 处理程序被饿死了,所以我终于尝试了 _bh 函数。现在一切看起来都很漂亮。我仍然需要一些专家说这样不会出问题。
标签: c linux-kernel kernel-module