linux内核定时器timer

测试环境:openEuler 22.03 LTS x86_64架构

内核版本:5.10

测试代码:

// timer_test.c

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


static struct timer_list timer;

void callback_func(struct timer_list *timer)
{
    printk("callback_func called!\n");
    mod_timer(timer, jiffies + msecs_to_jiffies(2000));
}

static int __init timer_test_init(void)
{
	timer_setup(&timer, callback_func, 0); /*初始化内核定时器 */
    timer.expires = jiffies + msecs_to_jiffies(2000); /* 每隔2秒执行一次 */
    add_timer(&timer);
	return 0;
}

/* 退出函数 */
static void __exit timer_test_exit(void)
{
	printk(KERN_INFO "delete timer!\n");
    del_timer_sync(&timer); /* 删除定时器 */
}

module_init(timer_test_init);
module_exit(timer_test_exit);
MODULE_LICENSE("GPL");

Makefile如下:

obj-m+=timer_test.o
CONFIG_MODULE_SIG=n
all:
	make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
	make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean

测试结果:

参考资料:

linux内核定时器_wwwlyj123321的博客-CSDN博客_linux 内核定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值