正确锁定在linux字符驱动程序中使用

时间:2010-07-19 07:44:32

标签: linux-kernel linux-device-driver

我正在编写一个简单的字符设备驱动程序。 (内核2.6.26) 多个并发阅读器和作家是期待的。

我不确定哪种类型的锁最适合用于同步对内部结构的短访问。

任何建议都将受到赞赏

2 个答案:

答案 0 :(得分:0)

http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c214.html比较。以前存在互斥锁时的旧文档,但是给定互斥锁是一个睡眠锁定,它们会计入用户上下文。

spinlock - spinlock_bh - 互斥锁 - 信号量

如果您的数据结构仅由用户空间触发执行的函数访问,则所有锁定原语都可供您使用。这取决于对“短途访问”有多短的直觉。

然后RCU作为第五种做法,尽管它本身并不是一种锁定原语。 (它与其中一个锁原语一起使用。)

答案 1 :(得分:0)

mutex开头。一旦你开始工作,你就可以考虑重新设计锁定。