内核:2.6.32
平台:x86 32位
spinlock_t 是自旋锁类型,定义为:
[C++] 纯文本查看 复制代码 typedef struct {
raw_spinlock_t raw_lock;
#ifdef CONFIG_GENERIC_LOCKBREAK
unsigned int break_lock;
#endif
#ifdef CONFIG_DEBUG_SPINLOCK
unsigned int magic, owner_cpu;
void *owner;
#endif
#ifdef CONFIG_DEBUG_LOCK_ALLOC
struct lockdep_map dep_map;
#endif
} spinlock_t;
虽然上面有许多开关,但是在一般默认安装的 linux,只有定义 raw_spinlock_t raw_lock; 这一项,所以这会简化了分析。
seqlock_t 是顺序锁类型,定义为:
[C++] 纯文本查看 复制代码 typedef struct {
unsigned sequence;
spinlock_t lock;
} seqlock_t;
顺序锁和自旋锁非常相似,从结构成员中可以看到多了一个变量 sequence ,它是为写者赋予了较高的优先级。 |