Linux内核定时器

  1. 定时器原理:每次定时器时间到的时候都会运行定时器处理函数,同时重新设定定时器的定时值
  2. 函数:
1.定时器结构体类型:
struct timer_list 
{
     struct list_head list;   定时器链表的入口
     unsigned long expires;   定时时间
     void (*function)(unsigned long );   定时器处理函数
     unsigned long data;   传给定时器处理函数的长整型参数
}
2.setup_timer
	功能描述:初始化定时器
	参数:第一个参数为定时器结构体对象指针,第二个参数为定时器处理函数,第三个参数为传递给处理函数
	的参数。
3.add_timer
	功能描述:将定时器加入到内核中,同时启动定时器
	参数:定时器结构体对象指针
4.del_timer
	功能描述:将内核从定时器中删除
	参数:定时器结构体对象指针
5.mod_timer
	功能描述:修改定时器定时时间(用在处理函数中)
	参数:第一个参数为定时器结构体对象指针,第二个参数为定时时间。
  1. 简单应用
#include <linux/module.h>

#include <linux/timer.h>

#include <linux/jiffies.h>

 

struct timer_list mytimer;			1.定义一个定时器

 

static void myfunc(unsigned long data)		4.定时器的定时处理函数

{

        printk("%s/n", (char *)data);

        mod_timer(&mytimer, jiffies + 2*HZ);		5.修改定时器的定时时间

}

 

static int __init mytimer_init(void)

{

        setup_timer(&mytimer, myfunc, (unsigned long)"Hello, world!");	2.初始化定时器

        mytimer.expires = jiffies + HZ;

        add_timer(&mytimer);		3,将定时器加入到内核中并启动定时器

 

        return 0;

}

 

static void __exit mytimer_exit(void)

{

        del_timer(&mytimer);		6.从内核中删除定时器

}

 

module_init(mytimer_init);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值