这是关于void spin_lock_irqsave(spinlock_t *lock, unsigned long flags);
函数调用。提到先前的中断状态存储在标志中,我们可以通过将其传递给spin_unlock_irqrestore
函数来恢复它们。
但是我没有得到当值被传递的标志如何在调用spin_lock_irqsave
时捕获先前的中断状态。
答案 0 :(得分:4)
spin_lock_irqsave
是一个宏,而不是一个函数。因此它可以分配给flags
,即使它显然是按值传递的。
见:
http://lxr.linux.no/#linux+v2.6.35.4/include/linux/spinlock.h#L312
http://lxr.linux.no/#linux+v2.6.35.4/include/linux/spinlock.h#L187