Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103296
  • 博文数量: 48
  • 博客积分: 12
  • 博客等级: 民兵
  • 技术积分: 276
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-21 21:44
文章分类
文章存档

2013年(6)

2012年(42)

我的朋友

分类:

2013-01-07 16:57:24

原文地址:工作队列的使用 作者:hyouyan

上一篇说到利用工作队列可以解决在中断里引用指针(如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的大的结构体重。
 
谢谢阅读!
阅读(462) | 评论(0) | 转发(0) |
0

上一篇:Android待机流程分析

下一篇:没有了

给主人留下些什么吧!~~