/*
*注意:本文仅用于学习记录和交流,若有错,望指正,谢谢
*/
-----------------------------------------分割线-------------------------------------------
主要是应用Linux的顶半部和底半部机制。
一、tasklet
//static struct tasklet tasklet_1;
void xxx_do_tasklet(unsigned long);
DECLARE_TASKLET(tasklet2, xxx_do_tasklet, 0);
/**底半部处理函数*/
void xxx_do_tasklet(unsigned long)
{
xxxxxxx
}
/*顶半部处理函数*/
xxx_top_handle(int irq, void * dev_id)
{
xxxx
taskletschedule(&tasklet); //调度底半部处理函数
xxxxx
}
/*设备驱动加载函数*/
int __init xxx_init(void)
{
xxxxx
result = request_irq( xxx_irq, xxx_top_handle, 0, "xxxname", NULL );
xxxxx
return 0;
}
module_init(xxx_init);
void __init xxx_exit(void)
{
xxxxx
//tasklet_init(&tasklet_1, xxx_top_handle, 0);
free_irq(xxx_irq, xxx_top_handle);
xxxxx
return 0;
}
module_exit(xxx_exit);
二、工作队列(...)