linux kernel中timer的使用 http://blog.csdn.net/njuitjf/article/details/16888821

在kernel中如果想周期性的干些什么事情,或者某个特定时间干些什么事情,可以使用timer。
例如像周期性地dump某段buffer的数据等等。

先来看看使用方法。
先定义一个struct timer_list的对象。eg: struct timer_list dump_t;

这个对象相当于一个闹钟,其中包含了时间点,也就是什么时候激活闹钟;一个函数指针,闹钟激活后干活的地方;还有一个void 指针,在闹钟干活的时候可能需要传给它一些当前的数据。

先看使用方法,之后再稍微深入了解一下。
前面定义好了struct timer_list对象,接下来就需要初始化该对象。
调用函数init_timer进行初步初始化。
然后对结构体中的一些成员进行赋值:
  init_timer(&dump_t); // 1. 初始化
  dump_t.function = dump_function; // 2. 绑定到时候要调的函数(timer任务具体的事务)
  dump_t.data = (unsigned long) my_dev; 
  dump_t.expires = jiffies + 2*HZ;    // 3.  设置timer任务激活时间,2秒钟之后timer被激活,如果是n秒,将2*HZ改为n*HZ。
这样就OK了么?
当然没有,需要把timer加到timer list中,也就是要告诉系统,你申请了这么一个timer。
  add_timer(&dump_t); // 4. 告诉系统,你申请了这么一个timer。
  
现在不明白的地方就是timer到了,干活的地方,即dump_function函数。
函数声明:
static void dump_function(unsigned long channel);
其中的实现么,就随意了,看你想让这个timer干些什么活。
注意一点,这个timer只会响应一次,因为jiffies + HZ时间点只有一个。
如果想让此timer周期性地干活,就需要在dump_function函数中重新启动该timer。

启动方法:

dump_function ()

{

  do_your_task();

  del_timer(&dump_t);
   dump_t.function = dump_function;
   dump_t.data = (unsigned long) mydev;
   dump_t.expires = jiffies + 2*HZ;

  add_timer(&dump_t);

}

最新文章

  1. HTTP和HTTPS的区别
  2. iOS 图片加载导致内存警告
  3. hdu 4324 拓扑排序
  4. mysql常用函数整理
  5. 解决:打开OleView报错 dllregisterserver in iviewers failed
  6. TIME_WAIT引起Cannot assign requested address报错
  7. Spring集成Quartz定时任务框架介绍和Cron表达式详解
  8. Javascript自动换图片
  9. Linux 上不可修改的文件和目录
  10. C# 创建验证码图片
  11. NET基础课--代码安全
  12. 全站 HTTPS
  13. postfix防垃圾邮件
  14. ajax请求发送和页面跳转的冲突
  15. Python笔记(七):字典、类、属性、对象实例、继承
  16. SQL解决"双重职位的查询"
  17. 20165235实验四 Android程序设计
  18. 内存(RAM或ROM)和FLASH存储的真正区别总结
  19. atom插件安装失败解决方法
  20. php利用array_search与array_column实现二维数组查找

热门文章

  1. IOS 特定于设备的开发:使用加速能力“向上定位”
  2. Advanced Replication同步复制实验(基于Trigger&基于Materialized View)
  3. addEventlistener监听的事件完成一次后自动取消与jquery的one方法比较;animate动画制作,arguments.callee的用法
  4. ANDROID自己定义视图——onLayout源代码 流程 思路具体解释
  5. 雪碧图(sprite)
  6. javascript 的工具方法 --- 类型判断
  7. Codeigniter-实现权限认证
  8. Median of Sorted Arrays
  9. SQLite学习手册(目录)
  10. PHP-购物网站开发设计(一)