延迟工作任务的使用方法
使用方法
主要元素:
使用一个延迟的工作任务需要有以下几个元素
一个struct delayed_work结构的对象,
struct delayed_work detect;
一个工作队列 struct workqueue_struct对象
static struct workqueue_struct *workqueue;
// 创建一个单线程工作队列.对同一个硬件操作中一般使用单线程,串行操作.
workqueue = create_singlethread_workqueue("kmmcd");
一个工作任务处理函数void mmc_rescan(struct work_struct *work);
如:void mmc_rescan(struct work_struct *work);
挂接任务:
将工作任务处理函数与 struct delayed_work对象关联
INIT_DELAYED_WORK(&detect, mmc_rescan);
启动一次任务:
queue_delayed_work(workqueue, &detect, delay);
其中delay是延时的时间 .
启动所有的任务:
flush_workqueue(workqueue);
释放任务队列:
destroy_workqueue(workqueue);