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 内核定时器


版权声明:本文为yongjong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。