[질문] request_irq()함수의 인자에 대해서...

글쓴이: 익명 사용자 / 작성시간: 월, 2001/10/29 - 1:23오전
IRQ 등록 함수인 request_irq()의 인자 중 인터럽트의 동작을 제어하는 세번
째 인자(irqflag)에 대한 내용이 잘 이해가 가질 않습니다.
책에는 irqflag 파라미터는 SA_INTERRUPT,SA_SHIRQ,SA_SAMPLE_RANDOM의 조합으
로 이루어진다고 소개되어 있군요.
근데 SA_INTERRUPT,SA_SHIRQ,SA_SAMPLE_RANDOM들의 기능에 대해서는 책을 봐
도 잘 이해가 가질 않습니다.
이것을 잘 알고 계실 고수님들의 많은 도움 부탁드립니다.
그럼 즐넷 되세요. ^^
Forums:
답변 내용 입니다.
리눅스 커널 소스를 보시면
#define SA_INTERRUPT deprecated_irq_flag(IRQF_DISABLED)
#define SA_SAMPLE_RANDOM deprecated_irq_flag(IRQF_SAMPLE_RANDOM)
#define SA_SHIRQ deprecated_irq_flag(IRQF_SHARED)
#define SA_PROBEIRQ deprecated_irq_flag(IRQF_PROBE_SHARED)
#define SA_PERCPU deprecated_irq_flag(IRQF_PERCPU)
정의는 이렇습니다.
그리고 deprecated_irq_flag 함수는
static inline unsigned long __deprecated deprecated_irq_flag(unsigned long flag)
{
return flag;
}
이렇게 flag 값을 바로 return 합니다. 실질적으로 정의된 IRQF_ 패턴의 정의 값입니다.
주석으로 친절히 어떤일을 하는지 적혀져 있습니다.
/*
* 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
댓글 달기