linux 에서 IRQ 번호가 모자라면 다른 디바이스와 IRQ 를 공유하나요??

trymp의 이미지

linux 2.6.xx 에 x86 머신입니다.

디바이스를 여러개 연결해서 IRQ 번호가 너무 많아지면

나중에 등록된 device 는 IRQ 를 다른 기기와 공유하나요?

일단 /proc/interrupts 에서 이런 현상을 본 적이 있어서

이런 현상이 왜 생기는지 궁금합니다.

고수님들의 많은 조언 부탁드립니다.

mirheekl의 이미지


따라서 갯수에 제한이 있을수밖에 없고 모자라면 셰어링을 하게 되는 것이지요. ISR은 중복 등록이 가능하므로 서비스루틴이 특별히 잘못되어있지 않는 한 문제없이 동작하게 되어 있습니다. 대충, 등록된 드라이버가 IRQ발생사실을 전달받고는 내껀지 아닌지 잽싸게 판단하고 자기것이면 처리를 하고 자기것이 아니면 그냥 넘기는 형태입니다. 따라서 남의것을 자기것으로 판단한다든지 자기것인지를 모르고 있든지 하면 문제가 될수도 있지만.. 아마도 지금은 거의 보기 힘들겠죠. 요새도 이런 일이 일어나는지 개인적으로 궁금하네요.

좀더 자세한 설명이 필요하시면 이 문서를 보시면 좋을듯 합니다. 안에 읽어볼만한 서적 추천도 함께 되어 있네요.
http://unix.stackexchange.com/questions/47306/how-does-the-linux-kernel-handle-shared-irqs

--