mer*_*011 0 c linux kernel-module linux-kernel
这是我为 2.x 内核编写的内核模块中的一行。
static spinlock_t mr_lock = SPIN_LOCK_UNLOCKED;
Run Code Online (Sandbox Code Playgroud)
当我尝试为 3.16 内核编译此模块时,出现以下构建错误。
error: ‘SPIN_LOCK_UNLOCKED’ undeclared here (not in a function)
Run Code Online (Sandbox Code Playgroud)
当我查看linux/spinlock_types.h定义spinlock_t此内核类型的 3.16 版本时,确实不再有 SPIN_LOCK_UNLOCKED 常量。
但是,不清楚如何为该内核初始化自旋锁以解锁。
实现相同初始化的正确方法是什么?
这取决于你如何使用它。
#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
to replace code like:
spinlock_t init_lock = SPIN_LOCK_UNLOCKED;
with the improved:
DEFINE_SPINLOCK(init_lock);
Run Code Online (Sandbox Code Playgroud)
我从这个上面拿走了
https://www.mail-archive.com/kernelnewbies@nl.linux.org/msg02836.html