AFAIK,在 LDD3(Linux 设备驱动程序第 3 版)编写之后,互斥体 API 被引入内核,因此书中没有描述。
本书描述了如何使用内核的信号量 API 来实现互斥功能。
它建议使用down_interruptable()
而不是down()
:
作为一般规则,您不希望使用不可中断操作,除非确实别无选择。不可中断的操作是创建无法杀死的进程(在 ps 中看到的可怕的“D 状态”)并惹恼用户的好方法 [Linux Device Drivers 3rd ed]
现在。这是我的问题:
mutex API 有两个“相似”的功能:
mutex_lock_killable()
一个mutex_lock_interruptable()
. 我应该选择哪一个?