测试环境: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/mo

本文介绍了在openEuler 22.03LTS x86_64环境下,使用C语言编写并测试Linux内核定时器的代码。测试代码创建了一个定时器,设置为每2秒调用一次回调函数`callback_func`,并在回调中重新激活定时器。`makefile`用于编译模块。测试结果显示了内核定时器的功能。
最低0.47元/天 解锁文章
940

被折叠的 条评论
为什么被折叠?



