De lo que he entendido:Linux vs spin_lock NT KeAcquireSpinLock
- de NT
KeAcquireSpinLock
es equivalente aspin_lock_bh
: el IRQL eleva a DISPATCH_LEVEL, las otras máscaras las interrupciones mitad inferior - funcionalmente lo mismo. Mientras que la variante NT mantiene el OldIrql, la variante de Linux no parece almacenar "wereInterruptsAlreadyMasked" en ninguna parte. ¿Esto significa quespin_unlock_bh
siempre los desenmascara? - NT
KeAcquireInterruptSpinLock
es comospin_lock_irqsave
.
¿Cuál es el equivalente NT de spin_lock
?
Si spin_unlock_bh
siempre desenmascara interrupciones (en NT-hablar, siempre cae IRQL a < DISPATCH_LEVEL), significa spin_lock
es similar a KeAcquireSpinLockAtDpcLevel
?
Como ha señalado, el bloqueo de la ventana se logra a través de retoques IRQL. Entonces, si este concepto no está presente en Linux, entonces siguiendo la lógica, spin_lock no tiene un equivalente directo, ya que ambos OS usan mecanismos ligeramente diferentes para lograr lo mismo. – LordDoskias
IRQL es una abstracción sobre el enmascaramiento de interrupción, y Linux obviamente tiene eso. Lo que me pregunto es para qué escenario es útil spin_lock, y ¿por qué la gente de NT no apoyó este escenario? – Ilya
Además, revisé mi pregunta después de algunas cosas más que entendí re: spin_lock_bg. – Ilya