首页
登录 | 注册

[linux][kernel]内核定时器操作

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);





相关文章

  • 原创文章,转载请注明: 转载自pagefault 本文链接地址: linux kernel 2.6.35中RFS特性详解 前面我介绍过google对内核协议栈的patch,RPS,它主要是为了软中断的负载均衡,这次继续来介绍google 的 ...
  • 转载请注明出处:http://forever.blog.chinaunix.net 最新在跟踪linux内核代码的时候,发现了ip_early_demux这个不是太新的参数,本着认真负责的态度将这个参数的来龙去脉梳理了一下. The rou ...
  •       工作队列(work queue)是Linux内核中将操作延期执行的一种机制.因为它们是通过守护进程在用户上下文执行,函数可以睡眠的时间,与内核是无关的.在内核版本2.5开发期间,设计了工作队列,用以替换此前的keventd机制. ...
  • 第十一章--内核的数据类型
    一.数据类型         u8;         /* 无符号字节(8位) */         u16:     /* 无符号字(16位) */         u32:     /* 无符号32位 */         u64:   ...
  • 再谈如何学习Linux,一线Linux专家学习经验谈
    记得最早接触linux是在2000年,那个时候,还在上大学,一个同学从荷兰回来,带回来了一个Linux的拷贝版,记得版本还是Redhat6.2.曾经为安装一个系统让我们忘记疲劳,挑灯夜战,不亦乐乎.那时Linux的学习资料还很少,能够学习的 ...
  • 《循序渐进Linux》第二版即将出版发行(附封面)
    从<循序渐进Linux>第一版发布,到现在已经近6年了,6年的时间,技术发生了很大的变化,Linux系统的内核版本从2.6.9(RHEL4.x)已经更新到了现在的3.10(Centos7.x),第一版中的部分内容已经陈旧,Lin ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号