Linux tasklet

static struct demo_dev *p = ...;

//延时操作函数
void demo_delay_action(unsigned long data)
{
    // 通过data获得设备相关指针
    static struct demo_dev *pdev = (static struct demo_dev *)data;
    //延时操作
    。。。。
}

//调用DECLARE_TASKLET(name, func, data) 定义一个tasklet对象 demo_tasklet
DECLARE_TASKLET(demo_tasklet, demo_delay_action, (unsigned long)p);

// 中断处理
irqreturn_t demo_isr(int irq, void *dev_id)
{   
    ....
    //通过tasklet_schedule实现延时操作
    tasklet_schedule(&demo_tasklet);
}

猜你喜欢

转载自blog.csdn.net/u013420428/article/details/80867134