zoukankan      html  css  js  c++  java
  • Linux内核的定时器使用

    Linux内核中提供一个定时器机制,我们只需要申请一个 struct time_list timing;

    系统初始化定时器 init_timer( &timing)

    struct timer_list {
          struct list_head entry;
    
          //定时值基于jiffies
          unsigned long expires;
    
          //定时器内部值
          struct tvec_base *base;
    
          //定时器处理函数
          void (*function)(unsigned long);
    
          //定时器处理函数参数
          unsigned long data;
    
          ……
    };
    

    可以看到timer_list中,expires是超时时间,jiffires是当前系统时间,function是超时之后执行的函数句柄,data是function的参数

    在声明和初始化了timing之后,需要去对timing的data, function, expires赋值

    struct timer_list timing;
    init_timer(&timing);
    timing.data = (unsigned long) something;
    timing.function = polling_handler;
    timing.expires = jiffies + 2 * HZ;
    

    之后自己去定义void polling_handler(unsigned long data)

    在需要开启定时器的地方,add_timer(&timing);

    最后关闭定时器,del_timer(&timing);

    周期性的执行只需在polling_handler中加入add_timer(&timing)即可

    简单的定时器使用就是这样

  • 相关阅读:
    315前夜
    学习,真正地学习
    华仔成都2007
    如果建筑师必须如网页设计师一般工作[转]
    “散文”
    笨小孩
    幸存者游戏启示[摘录]
    通过配置获取客户端所属服务器IP或服务器名
    观《三国之见龙卸甲》
    散文(二)
  • 原文地址:https://www.cnblogs.com/noanswer/p/3294246.html
Copyright © 2011-2022 走看看