第二篇---内核定时器的简单使用

/*
 *  每隔一段时间打印字符
 *  这是一个定时器使用实验的,简单实用time_list去初始化一个动态定时器
 */
#include <linux/kernel.h>
#include <linux/init.h> 
#include <linux/module.h>
#include <linux/kobject.h>
#include <linux/device.h>
#include <linux/timer.h>

struct timer_list my_timer; 

static void timer_func(unsigned long func_parameter)
{
	init_timer(&my_timer);
	/* HZ代表1秒,定时器的时间控制就是设置这个expire的值
	 * 这里的5*HZ地标这里是定时5秒;
	 */
	my_timer.expires = jiffies + 5*HZ;
	my_timer.function = timer_func;
	my_timer.data = func_parameter;
	add_timer(&my_timer);
	printk("time out \n");
}
static int mytime_init(void)
{
	printk("hello , this is a timer\n");
	init_timer(&my_timer);
	my_timer.expire = jiffies + 5*HZ;
	my_timer.function = timer_func;
	my_timer.data = func_parameter;
	add_timer(&my_timer);
	return 0;
}

static void mytime_exit(void)
{
	printk("bybe \n");
	del_timer(&my_timer);
}

module_init(mytime_init);
module_exit(mytime_exit); 
MODULE_AUTHOR("xxx");
MODULE_LICENSE("GPL"); /* 必须用大写 */

      这段代码的功能就是在ubuntu里边定时的打印一段东西。

 

static int mytime_init(void)
{
	printk("hello , this is a timer\n");
	init_timer(&my_timer);
	my_timer.expire = jiffies + 5*HZ;
	my_timer.function = timer_func;
	my_timer.data = func_parameter;
	add_timer(&my_timer);
	return 0;
}

     这一段是定时器的初始化函数:

 

1.有一个结构体吧,代表定时器,是啥?就是time_list,那么一开始就要声明一个这个结构体吧

2.结构体里边的内容,需要填充吧---首先init_timer()初始化定时器,然后是:

 

        my_timer.expire = jiffies + 5*HZ; //定时多久
	my_timer.function = timer_func;   //时间到了,应该执行的函数体
	my_timer.data = func_parameter;   //传给上边函数的参数
	add_timer(&my_timer);             //添加定时器到内核,或者说是注册定时器

    先说一下吧,jiffies代表的是时间,HZ的大小是1s内jiffies增加的数,在这里可以理解为5s后,执行timer_func函数。

 

3.timer_func函数

 

static void timer_func(unsigned long func_parameter)
{
	init_timer(&my_timer);
	/* HZ代表1秒,定时器的时间控制就是设置这个expire的值
	 * 这里的5*HZ地标这里是定时5秒;
	 */
	my_timer.expires = jiffies + 5*HZ;
	my_timer.function = timer_func;
	my_timer.data = func_parameter;
	add_timer(&my_timer);
	printk("time out \n");
}

     我们需要在timer_func里边再次设置expires,function,data,然后就是我们其他的动作。


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值