Linux驱动学习之内核软件定时器

Linux内核中,软件定时器是一种基于软件的定时机制,用于在预定的时间间隔后执行指定的操作或回调函数。它是一种轻量级的定时器,适用于需要相对较低精度的时间间隔处理。

  • 何为定时器 

内核定时器有个明显特点 就是单次计数,回调函数执行后需要再次激活定时器。

  •  什么 是软件定时器

在内核中我们为什么要用软件定时器,而不是硬件定时器呢? 原因之一是为了“车同轨,书同文”,是为了通用!!!

  • 在内核中怎么使用软件定时器

要想在内核中使用软件定时器,首先得用   struct timer_list 定义一个定时器,然后调timer_setup();

函数初始化定时器,然后在合适的的地方调用    mod_timer();激活定时器。

  • API函数介绍
timer_setup(timer, callback, flags)

这个函数为宏函数,

追踪下去可发现函数原型。

参数一:定时器结构体。

参数二:回调函数。

参数三:一般给0.

无返回值。

 创建完定时器后在需要地方调用下方函数开始计时。

int mod_timer(struct timer_list *timer, unsigned long expires)

参数一:定时器结构体

参数二: jiffies +计数个数(下面详说)

内核定时器的计数依据内核的一个全局变量 jiffies 计数。加入定时器始终频率100HZ,那就是一秒计100个数,计一个数需要10ms,那吗延时20ms就要传入jiffies+2,总的来说jiffies为当前计数值,在此基础上加上等待时间所需要计数的个数。

也可以调用函数计算,等待10ms    mod_timer(&timer, jiffies+msecs_to_jiffies(10)); 

删除定时器

int del_timer(struct timer_list *timer)

参数:定时器结构体 

 

  • 定时器结构体

这里面的第二个属性就是 要等待秒数计数的个数。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值