std*_*all 8 mutex semaphore linux-kernel
AFAIK,在LDD3(Linux设备驱动程序第3版)编写完成后,mutex API被引入内核,所以书中没有对它进行描述.
该书描述了如何将内核的信号量API用于互斥功能.
它建议使用down_interruptable()而不是down():
作为一般规则,您不希望使用不间断操作,除非确实没有其他选择.不可中断的操作是创建不可杀死进程的好方法(在ps中看到可怕的"D状态"),并且惹恼用户[Linux设备驱动程序第3版]
现在.这是我的问题:
互斥锁API有两个"相似"功能:
mutex_lock_killable()一mutex_lock_interruptable().我应该选择哪一个?
CL.*_*CL. 10
使用mutex_lock_interruptible()功能可以让您的驱动程序被任何信号中断.这意味着应该编写系统调用以便可以重新启动它.(另见ERESTARTSYS.)
使用mutex_lock_killable()让你的司机被打断只有通过实际杀死进程,即当过程中有没有机会看看你的系统调用的结果,甚至再次尝试信号.
使用mutex_lock()时可以保证互斥锁不会长时间保留.