본문 바로가기

Programming/Linux_Kernel

singlethread_workqueue 사용


아래와 같이 함수 구정을 하면 됩니다.
간단한 함수들이므로 설명은 생략 합니다.

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