Linux spin_lock против NT KeAcquireSpinLock

Из того, что я могу понять:

  • NT KeAcquireSpinLock эквивалентен spin_lock_bh : один поднимает IRQL до DISPATCH_LEVEL, другой маскирует нижнюю половину прерывания - функционально то же самое. В то время как вариант NT сохраняет OldIrql, вариант Linux, похоже, нигде не хранит "wereInterruptsAlreadyMasked". Означает ли это, что spin_unlock_bh всегда демаскирует их?
  • NT KeAcquireInterruptSpinLock подобен spin_lock_irqsave .

Что такое NT-эквивалент spin_lock ?

Если spin_unlock_bh всегда демаскирует прерывания (на языке NT всегда снижает IRQL до spin_lock сродни KeAcquireSpinLockAtDpcLevel ?

6
задан Ilya 16 October 2011 в 01:32
поделиться