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
超级会员免费看
订阅专栏 解锁全文
1100

被折叠的 条评论
为什么被折叠?



