上一篇说到利用工作队列可以解决在中断里引用指针(如i2c的读写)会导致系统崩溃,现在下面描述工作队列的使用
第一步:声明一个指向工作队列的指针
struct workqueue_struct *workq;
第二步:创建自己的工作队列
data->workq = create_singlethread_workqueue("eeprom");//dev->driver->name eeprom为名字可以修改
第三步:创建一个工作结构体变量,并将处理函数的入口地址赋给这个工作结构体变量
DECLARE_WORK(tpk_work, tpk_wq);
其中tpk_wq是工作队列的处理函数
如static void tpk_wq(struct work_struct *work)
{
}
第四步:将工作添加入自己创建的工作队列等待执行
queue_work(data->workq, &tpk_work);
第五步:退出时删除自己的工作队列
destroy_workqueue(data->workq);
说明,其中struct workqueue_struct *workq;在data的大的结构体重。
谢谢阅读!
阅读(497) | 评论(0) | 转发(0) |