什么在spin_lock_init和DEFINE_SPINLOCK以及WHEN之间喜欢什么

sri*_*rib 2 c linux-device-driver linux-kernel

我有个问题.DEFINE_SPINLOCK优于spin_lock_init吗?前者优于后者的优点是什么,可能的缺点是什么?

Rol*_*and 5

如果您有静态数据结构,DEFINE_SPINLOCK允许您声明一个spinlock变量并在一行中初始化它.但是对于在运行时分配的任何内容,例如当自旋锁嵌入更大的结构时,则需要分配内存然后调用spin_lock_init().

我想我会说可以使用它时我更喜欢DEFINE_SPINLOCK.优点很小(编译时初始化与运行时初始化相比,少了几行代码),但没有真正的缺点.正如我上面提到的,通常不可能使用DEFINE_SPINLOCK.