이런 질문 여기다 해도 될지 모르겠지만, 염치불구하고 하겠습니다.
리눅스 디바이스 드라이버에서 인터럽트 서비스 루틴 등록할 때
IRQF_* 플래그가 어떤 역할을 하는지 궁금합니다.
특히 궁금한건 IRQF_SAMPLE_RANDOM 입니다.
랜덤 생성기에게 먹이는 용도?로 사용된다는데 도통 무슨말인지.. 아시는분 계신가요?
인터럽트 공부하는데 좋은 사이트나 참고문서도 추천해 주시면 감사하겠습니다.
/*
* These flags used only by the kernel as part of the
* irq handling routines.
*
* IRQF_DISABLED - keep irqs disabled when calling the action handler
* IRQF_SAMPLE_RANDOM - irq is used to feed the random generator
* IRQF_SHARED - allow sharing the irq among several devices
* IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur
* IRQF_TIMER - Flag to mark this interrupt as timer interrupt
* IRQF_PERCPU - Interrupt is per cpu
* IRQF_NOBALANCING - Flag to exclude this interrupt from irq balancing
* IRQF_IRQPOLL - Interrupt is used for polling (only the interrupt that is
* registered first in an shared interrupt is considered for
* performance reasons)
*/
#define IRQF_DISABLED 0x00000020
#define IRQF_SAMPLE_RANDOM 0x00000040
#define IRQF_SHARED 0x00000080
#define IRQF_PROBE_SHARED 0x00000100
#define IRQF_TIMER 0x00000200
#define IRQF_PERCPU 0x00000400
#define IRQF_NOBALANCING 0x00000800
#define IRQF_IRQPOLL 0x00001000
소스를 봐야하는 문제네요. 보통 못 찾을 때는 kernel의 Documentation을 보면 있는데 찾아봤는데 없네요.
저도 본 지가 오래되었는데, 요즘 많이 늘었네요....ㅎㅎ, SMP가면서 늘어난 것도 있고요.
제가 한참 공부할 때만 해도 3개 정도만 있었던 거 같은데...쩝
IRQF_SAMPLE_RANDOM 의 경우는 irq number가 /dev/random 혹은 /dev/urandom 의 random값을 생성할 때 영향을 미치게 하겠다는 뜻일 듯 합니다.
나머지는 좀 더 코드를 봐야......쩝