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

时间:2015-01-15 05:05:26

标签: linux linux-kernel linux-device-driver mutex semaphore

Linux设备驱动程序第3版一书中,互斥锁由信号量通过init_MUTEX(sem)实现。然而,较新的内核(如内核3.2.X)已删除此功能并添加了互斥锁的支持。

但是当我遇到代码时:

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

我无法确保是否存在此方法的副本用于互斥锁。换句话说,如何中断特定互斥锁的等待?

1 个答案:

答案 0 :(得分:1)

  

我无法确保此方法是否与互斥锁相对应。换句话说,如何中断特定互斥锁的等待?

是的,互斥锁是悲观锁,它取代了较新内核中的信号量。如果要使用互斥锁进行可插入锁定,请使用:

lock_interruptable()  

参考头文件:

#include <linux/mutex.h>