定时器

内核定时器:定时触发定时器中断,执行定时器中断处理函数

头文件:<linux/timer.h>
定时器数据类型:

struct timer_list {
unsigned long expires; //定时器计数时间值
void (*function)(unsigned long); //定时器处理函数
unsigned long data; //私有数据
};

定义并初始化定时器:

#define DEFINE_TIMER(_name, _function, _expires, _data)
struct timer_list _name = {
.entry = { .prev = TIMER_ENTRY_STATIC },
.function = (_function),
.expires = (_expires),
.data = (_data),
.base = &boot_tvec_bases,
.slack = -1,
__TIMER_LOCKDEP_MAP_INITIALIZER(
FILE “:” __stringify(LINE))
}

内核中使用jiffies进行时间计数,计数的频率由HZ来决定
如果expires的值和jiffies值相等,就会触发定时器中断

expires = jiffies + HZ; //定时多长时间? 定时1S
expires = jiffies + n*HZ //定时n秒

init_timer(struct timer_list * timer) //初始化定时器的函数宏

void add_timer(struct timer_list *timer); //添加定时器
int del_timer(struct timer_list * timer); //删除定时器

修改定时器时间,再次触发定时器中断

int mod_timer(struct timer_list *timer, unsignedlong expires);
功能:修改定时器时间 参数:
@timer 定时器结构体指针
@expires 定时器定时时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值