함수에서 다음과 같이 irq num 를 받아올 경우가 있다.
static int __init my_probe(struct platform_device *pdev)
{
...
irq_num = platform_get_irq(pdev, 0);...
}
이때 얻어지는 데이터는 아래와 같이 등록되어 있는 platform_device 의 리소스 입니다.
platform_get_irq 함수는 해당 리소스에 접근한 후flag 값이 IORESOURCE_IRQ 임을 보고 0 번째 배열의 irq 를 리턴하게 됩니다.
/* HPD */
static struct resource s5p_hpd_resources[] = {
[0] = {
.start = IRQ_TVOUT_HPD,
.end = IRQ_TVOUT_HPD,
.flags = IORESOURCE_IRQ,
},
};
struct platform_device s5p_device_hpd = {
.name = "s5p-tvout-hpd",
.id = -1,
.num_resources = ARRAY_SIZE(s5p_hpd_resources),
.resource = s5p_hpd_resources,
};
EXPORT_SYMBOL(s5p_device_hpd);
위의 s5p_device_hpd 는 (당연하게) platform_add_devices() 함수를 이용해서 register 된 후에 사용되어야 합니다.
'Programming > Linux_Kernel' 카테고리의 다른 글
singlethread_workqueue 사용 (0) | 2011.07.13 |
---|---|
linux coding tip / guide (0) | 2011.07.12 |
per-CPU 변수 (dual-core) (0) | 2011.03.15 |
linux kernel document - phonet (0) | 2011.03.09 |
TASK_KILLABLE : 리눅스에 도입된 새로운 프로세스 상태 (0) | 2011.03.08 |