在驱动中如果在中断函数中直接调用一些耗时的操作可能会引起系统崩溃,这时可以使用tasklet的调度。
1.初始化
static struct tasklet_struct t_isr1;
tasklet_init(&t_isr1, isr1_lower_half, 0);
2.回调
void isr1_lower_half(unsigned long data)
{
printk( "run isr1_lower_half\n");
}
3.开始调度
tasklet_schedule(&t_isr1);