54、Linux内核同步:互斥锁与信号量详解

Linux内核同步:互斥锁与信号量详解

1. 互斥锁的基本操作

互斥锁是内核中用于保护临界区的重要工具。理论上,内核提供了 mutex_destroy() API,它与 mutex_init() 相反,用于标记互斥锁不可用。不过,该操作必须在互斥锁处于解锁状态时进行,且调用后互斥锁将无法再使用。在常规系统中, mutex_destroy() 通常是一个空函数,只有在启用 CONFIG_DEBUG_MUTEXES 的内核中,它才会成为实际的代码。

使用互斥锁的典型模式如下:

DEFINE_MUTEX(...);        // init: initialize the mutex object
/* or */ mutex_init();
[ ... ]
    /* critical section: perform the (mutex) locking, unlocking */
    mutex_lock[_interruptible]();
    << ... critical section ... >>
    mutex_unlock();
    mutex_destroy();      // cleanup: destroy the mutex object

2. 互斥锁在驱动中的应用示例

2.1 旧驱动的问题

之前编写的一个简单杂项字符设备驱动 miscdrv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值