본문 바로가기
카테고리 없음

request_irq 와 request_threaded_irq 간단 정리

by kyuho.choi 2011. 7. 21.
728x90
반응형
- 두 API 모두 인터럽트를 처리하는 ISR 을 등록하는 경우에 사용하며,
ISR 타입 및 등록 방법은 동일하다.

request_irq : 주로 EINT 를 처리하는 경우에 사용하며, interrupt context 로의 context switching 이 발생한다. 즉, irq 를 등록할 때 지정하는 ISR 은 interrupt context 에서 실행 됨을 의미한다.


request_threaded_irq : 마찬가지로 EINT 를 처리하는 경우에 사용하며, interrupt context 로의 context switching 이 발생하지 않는다. kernel thread 를 생성하여 kthread 의 수행 함수가 등록시에 사용하는 ISR 타입의 함수가 될 뿐이다. bottom half 기법이라 볼 수 있으며, tasklet 이나 workQ 를 대체 가능한 구조이다.


- 언제 사용하나?

request_irq : irq 발생시 바로 isr 을 처리해주고자 할 때 사용 가능하다. 처리하고자 하는 인터럽트가 빨리 실행되어야 할 때 등록할 수 있다. tophalf 의 형태라 볼 수 있다.
request_threaded_irq : 주로 uevent 나 usermode helper 를 연동해서 사용하고자 할 때 사용 가능하다.
                                일례로 request_irq 로 등록한 isr 에서 uevent 나 usermode helper를 이용하면? 
                                당신의 리눅스 machine 을 자살시키는 좋은 방법이 될 것이다.
 
728x90
반응형

댓글