工作队列的使用

时间:2022-11-10 03:57:05

1,定义工作结构体变量bat_work

static struct work_struct bat_work;

2,编写一个实现某功能的工作处理函数

static void wm97xx_bat_work(struct work_struct *work)
{
 wm97xx_bat_update(&bat_ps);
}

3,初始化工作队列,

 INIT_WORK(&bat_work, wm97xx_bat_work);

初始化指定工作,目的是把用户指定的函数wm97xx_bat_work赋给work_structfunc变量。

 4,对工作进行调度,

  schedule_work(&bat_work);

添加入队列的工作完成后会自动从队列中删除

5,cancel_work_sync(&bat_work);

取消一个已提交给工作队列入口项

6, flush_work_sync(&bat_work);

等待任务完成