커널 타이머 인터럽트에서 spin_lock_irqsave() 실행시 문제점...

lojoo의 이미지

네트워크 인터럽트 핸들러에서 add_timer로 설정한 타임값이 만료되어

커널 타어머 인터럽트 발생시 실행되는 함수에서

spin_lock_irqsave()를 호출하면 다른 인터럽트는 비활성화 되는지

궁금합니다.

spin_lock_irqsave()를 호출한 이유는 너트워크 인터럽트 핸들러에서 사용하는 공유 데이터를

변경하기위함인데요. 이때 다시 네트워크 인터럽트에 의해 선점되는지 궁금하네요...

bushi의 이미지

local_irq_disable() ... x86 으로 치면 cli 가 호출됩니다.

spin_lock_irqrestore() 에선 넘겨받은, 즉 이전에 save된 플래그에 따라 local_irq_enable() ... x86 으로 치면 sti 가 호출되던가 말던가 합니다.