아래와 같이 함수 구정을 하면 됩니다.
간단한 함수들이므로 설명은 생략 합니다.
struct work_struct my_int_work;
struct workqueue_struct *my_wq = NULL;
void test-device_int_irq_handler_sched(void)
{
queue_work(my_wq, &my_int_work);
}void my_interrupt_event_work(struct work_struct *p)
{
printk(KERN_ERR "my_interrupt_event_work() is called\n");
... // 실제 work
}
static int my_device_probe(struct i2c_client *client, const struct i2c_device_id *id)
{my_wq = create_singlethread_workqueue("my_wq");
INIT_WORK(&my_int_work, my_interrupt_event_work);
ret = request_threaded_irq(MY_INT_IRQ, NULL, test-device_int_irq_handler,
IRQF_SHARED , "test-device_int", (void *) state);if (ret) {
printk(KERN_ERR "unable to request irq test-device_int"
" err:: %d\n", ret);
return ret;
} }
'Programming > Linux_Kernel' 카테고리의 다른 글
I2C check 함수 (0) | 2011.10.14 |
---|---|
checkpatch.pl 과 Lindent 사용법 (0) | 2011.09.16 |
linux coding tip / guide (0) | 2011.07.12 |
platform_get_irq 로 irq number 받아서 사용하기. (0) | 2011.07.12 |
per-CPU 변수 (dual-core) (0) | 2011.03.15 |