内核开发中是否有类似down_interruptible()的互斥函数?

Is there any functions similar to down_interruptible() for mutexes in kernel development?

在书Linux设备驱动程序第3版中,互斥锁是通过信号量通过init_MUTEX(sem)实现的。较新的内核,如内核3.2.X,已经去掉了这个功能,增加了mutex的支持

但是当我遇到代码时:

if (down_interruptible(&sem))
    return -ERESTARTSYS;

我无法确定是否有与此方法对应的互斥锁。换句话说,我怎样才能中断对特定互斥锁的等待?

I can't ensure that whether there is a counterpart of this method for mutex. In other words, how can I interrupt the waiting on particular mutex?

是的,互斥量是悲观锁,它在较新的内核中取代了信号量。如果你想使用互斥锁获取可中断锁,请使用:

lock_interruptable()  

参考头文件:

#include <linux/mutex.h>