¿Puedo aprovechar el spinlock de Linux cuando está girando en círculos?
La preferencia del kernel de Linux solo puede adelantarse al kernel cuando el kernel está ejecutando un controlador de excepciones (generalmente una llamada al sistema) y la preferencia del kernel está permitida. Las situaciones en las que se prohíbe la preferencia del kernel se enumeran a continuación:
(1) La preferencia del kernel no está permitida cuando el kernel ejecuta la rutina de procesamiento de interrupciones y la preferencia del kernel se ejecuta cuando regresa la interrupción.
(2) Cuando el kernel ejecuta una interrupción suave o un tasklet, la preferencia del kernel está prohibida y la preferencia del kernel se ejecuta cuando regresa la interrupción suave.
(3) La preferencia del kernel está prohibida en la sección crítica. La función de protección de la sección crítica controla la preferencia a través de la macro de conteo de preferencia. Si el recuento es mayor que 0, significa que la preferencia del kernel está prohibida.
Por lo tanto, la sección crítica protegida por el bloqueo de giro no puede ser anulada.