Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87214
  • 博文数量: 38
  • 博客积分: 350
  • 博客等级: 一等列兵
  • 技术积分: 365
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 09:14
个人简介

每一种技术都有其诱人之处。

文章分类

全部博文(38)

文章存档

2016年(2)

2014年(23)

2011年(13)

我的朋友

分类: 嵌入式

2016-05-05 14:48:27

Kernel中用于在某个时间点执行任务或周期任务:
1.定时器任务列表

点击(此处)折叠或打开

  1. #include

  2. struct timer_list{
  3.     struct list_head entry;
  4.     unsigned long expires;//超时时间
  5.     void(*function)(unsigned long);//超时处理函数
  6.     unsigned long data;//传递给处理函数
  7.     struct tvec_base *base;
  8. }
2. 创建定时器

点击(此处)折叠或打开

  1. struct timer_list*ptmr = (struct timer_list*)kmalloc(sizeof(struct timer_list),GFP_ATOMIC);
  2. if(!ptmr){
  3.     printk(KERN_ERROR"Fail to create timer!!!\n");
  4.     return;
  5. }
  6. init_timer(ptmr);//初始化定时器
  7. ptmr->data = xxx;//设置传递给超时处理函数参数
  8. ptmr->function = xxx;//设置超时处理函数
  9. ptmr->expires = jiffies + xxx * HZ / 1000;//当前时间后xxx ms 后超时
  10. //注册定时器
  11. add_timer(ptmr);
若是周期任务,只需在超时出事函数退出前重新设定下一次超时时间并注册定时器。
3.销毁定时器

点击(此处)折叠或打开

  1. //销毁定时器
  2. del_timer(ptmr);
  3. kfree(ptmr);




阅读(926) | 评论(0) | 转发(0) |
0

上一篇:[linux]系统维护常用命令

下一篇:没有了

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