工作队列的作用就是把工作推后,交由一个内核线程去执行,更直接的说就是如果您写了一个函数,而您现在不想马上执行它,您想在将来某个时刻去执行它,那您用工作队列准没错.您大概会想到中断也是这样,提供一个中断服务函数,在发生中断的时候去执行,没错,和中断相比,工作队列最大的好处就是可以调度可以睡眠,灵活性更好.

就比如这里,如果我们将来某个时刻希望能够调用led_work()这么一个我们自己写的函数,那么我们所要做的就是利用工作队列.如何利用呢?第一步就是使用INIT_WORK()或者INIT_DELAYED_WORK()来初始化这么一个工作,或者叫任务,初始化了之后,将来如果咱们希望调用这个led_work()函数,那么咱们只要用一句schedule_work()或者schedule_delayed_work()就可以了,特别的,咱们这里使用的是INIT_DELAYED_WORK(),那么之后我们就会调用schedule_delayed_work(),这俩是一对.它表示,您希望经过一段延时然后再执行某个函数,所以,咱们今后会见到schedule_delayed_work()这个函数的,而它所需要的参数,一个就是咱们这里的&hub->leds,另一个就是具体自己需要的延时.&hub->leds是什么呢?struct usb_hub中的成员,struct delayed_work leds,专门用于延时工作的,再看struct delayed_work,这个结构体定义于include/linux/workqueue.h:

35 struct delayed_work {

36         struct work_struct work;

37         struct timer_list timer;

38 };

schedule_delayed_work()相关推荐

  1. schedule_delayed_work()用法

    工作队列 在Linux内核中,对下半部(或者说推后执行的工作)的处理方式有好几种,包括BH(bottom half),软中断,Tasklets和工作队列等等.在2.6内核中,大名鼎鼎的BH处理被废除, ...

  2. schedule_delayed_work 用法详解

    1 声明一个delayed_work DECLARE_DELAYED_WORK(work,work_fun); 2 schedule delayed_work,需要指明延迟时间. schedule_d ...

  3. linux 工作队列之schedule_delayed_work用法

    文章目录 前言 一.定义自己的delayed_work 二.定义在工作队列中被调用的函数 1.在工作队列中被调用的函数原型 2.定义在工作队列中被调用的自己实现的函数 三.初始化数据结构 四.提交任务 ...

  4. schedule_delayed_work使用

    schedule_delayed_work 目的是解决spdif播放音频前800ms音频不出的问题.但是spdif信号锁定很差音响就会丢失前面的音频 diff --git a/soc/x2000/sp ...

  5. I.MX6 bq27441 driver hacking

    /************************************************************************** I.MX6 bq27441 driver hac ...

  6. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

    关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  ...

  7. 【linux kernel】 中断处理-中断下半部【转】

    转自:http://www.cnblogs.com/embedded-tzp/p/4453987.html 欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地 ...

  8. 下半部机制之工作队列

    工作队列是一种不同于软中断和微线程的一种下半部延迟机制.工作队列将工作延迟到一个内核线程中执行,它运行在进程上下文中,它是可调度的,并且可以休眠.通常,如果延迟的工作中需要休眠,就使用工作队列,否则使 ...

  9. linux 中断机制的处理过程

    一.中断的概念 中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被 ...

最新文章

  1. 关于页面打印window.print()的样式问题
  2. python车辆轨迹分析_Ngsim数据集分析与python处理,NGSIM,解析,及
  3. HDU1283 最简单的计算机【模拟】
  4. python中文乱码 def decode-python处理一些乱码的中文文本时decode('utf-8')报错的处理...
  5. 【转】ABP源码分析四十四:ZERO的配置
  6. python爬虫本科容易找工作吗_python爬虫基础学完了,我真的能找到一份工作吗?...
  7. linux chmod命令参数及用法详解--文件文件夹权限设定命令
  8. Android开发中如何加载API源码帮助开发
  9. Spring Cloud Ribbon客户端负载均衡(学习总结)
  10. 地理信息系统导论第八版_地理信息系统导论(原著第8版)
  11. 智慧新能源管理-光伏物联网解决方案
  12. 用 Python 给微信头像加个圣诞老人(平安果)小图标
  13. 温度及pH敏感性聚乙烯醇/羧甲基壳聚糖水凝胶/金银花多糖/薄荷多糖/O-羧甲基壳聚糖水凝胶
  14. 中国驾照在美国各州开车的规定
  15. argument type mismatch
  16. 汽车试验数据管理(TDM系统)的特点分析及解决方案
  17. 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择
  18. Crossplane 和 Terraform 的区别
  19. argc和argv的使用总结
  20. dac 矩形波函数c语言,使用DAC接口生成矩形波

热门文章

  1. 抖音服务器到底有多大,能够供那么多人同时刷?
  2. 财务软件“新物种”来了!唯你科技“精采智能”领势
  3. 如何在 Excel 中锁定受保护工作表的特定区域?
  4. 3DCNN参数解析:2013-PAMI-3DCNN for Human Action Recognition
  5. 小红书3大新功能上线,提升笔记转化率和品牌投放效果
  6. 共享雨伞,又一个昙花一现的共享经济?
  7. 数据库拆分的理解和案例(详细版)
  8. 还不了解Oauth2协议?这篇文章从入门到入土让你了解Oauth2以及Spring Security OAuth2 的使用
  9. how to upload directory to github(怎么把文件目录上传到github)
  10. 【服务器数据恢复】多块磁盘离线导致RAIDZ崩溃的数据恢复案例