linux内核定时器编程

 

虚拟机红帽企业版5

1.内核定时器节点

struct timer_list{

struct list_head entry;//定时器链指针

unsigned long expires;//到期时间

void (*function)(unsigned long);//回调函数

unsigned long data;//函数参数

struct timer_base_s *base;

........................

}

2. 初始化函数

void init_timer(struct timer_list *timer);

其中到期时间、回调函数、函数参数需要自己设置进去

3.启动函数

void add_timer(struct timer_list *timer);

4. 删除定时器

int del_timer(struct timer_list *timer);

5.修改expire

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

 

例子如下(可以运行):

#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/init.h>
#include<linux/timer.h>
#include<asm/uaccess.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("LMJ");

struct timer_list timer;

void timer_function(int para)
{
 printk("<0>Timer expired and para is %d\n",para);
}
int timer_init()
{
 init_timer(&timer);
 timer.data=10;
 timer.expires=jiffies+20*HZ;
 timer.function=timer_function;
 add_timer(&timer);
 return 0;
}
void timer_exit()
{
 del_timer(&timer);
}
module_init(timer_init);
module_exit(timer_exit);

 

Makefile文件为

VER=$(shell uname -r)
obj-m:=timer.o

build:timer
timer:
 make -C /lib/modules/$(VER)/build M=$(CURDIR) modules
clean:
 make -C /lib/modules/$(VER)/build M=$(CURDIR) clean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>