Атрибут SpinLock read_lock_irqsave flags - PullRequest
       7

Атрибут SpinLock read_lock_irqsave flags

0 голосов
/ 15 сентября 2010

Это касается вызова функции void spin_lock_irqsave(spinlock_t *lock, unsigned long flags);. Упоминается, что предыдущее состояние прерывания сохраняется во флагах, и мы можем восстановить их, передав это в функцию spin_unlock_irqrestore.

Но я не понял, как флаги, которые передаются значениями, фиксируют предыдущее состояние прерывания при вызове spin_lock_irqsave.

1 Ответ

4 голосов
/ 15 сентября 2010

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

...