字符设备驱动--定时器

大笑

四点要体侧跑1000米,

跑完回来,太久没运动累屎了

static struct timer_list buttons_timer;  //定义定时器结构体

static int sixth_drv_init(void)
{
        init_timer(&buttons_timer);        //初始化定时器
        buttons_timer.function = buttons_timer_function;   //定时器服务子函数
        //buttons_timer.expires  = 0;     
        add_timer(&buttons_timer);      // 激活定时器

        。。。。。。。

        return 0;
}


static void buttons_timer_function(unsigned long data)   //服务子函数
{

       

}
mod_timer(&my_timer, jiffies+new_delay);
   mod_timer()函数也可操作那些已经初始化,但还没有被激活的定时器,如果定时器未被激活,mod_timer()会激活它。如果调用时定时器未被激活,该函数返回0;否则返回1。但不论哪种情况,一旦从mod_timer()函数返回,定时器都将被激活而且设置了新的定时值。

    如果需要在定时器超时前停止定时器,可以使用del_timer()函数:


mod_timer(&name, jiffies+HZ/100);  //HZ为一秒



   struct timer_list my_timer;
    接着需要通过一个辅助函数初始化定时器数据结构的内部值,初始化必须在使用其他定时器管理函数对定时器进行操作前完成。
   init_timer(&my_timer);
    现在可以填充结构中需要的值了(与定时器直接相关的三个参数):
   my_timer.expires = jiffies + delay;  // 定时器超时时的节拍数
   my_timer.data     = 0;                // 给定时器处理函数传入参数0
   my_timer.function = my_function;      // 定时器超时时调用的函数
   my_timer.expires表示超时时间,它是以节拍为单位的绝对计数值。如果当前jiffies计数等于或大于 my_timer.expires,那么my_function指向的处理函数就会开始执行,另外该函数还要使用长整型参数my_timer.data。 如果你不需要这个参数,可以简单地传递0(或任何其他值)给处理函数。    最后,必须激活定时器:
    add_timer(&my_timer);





参考:http://blog.163.com/shi_shun/blog/static/237078492012031491952/

今天大猪头回家了快哭了离周三还有三天


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值