my driver test code,I want to use mod_timer to timer for 10 milliseconds, but the result is always 20 milliseconds. what’s wrong with it? ..
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
#include <linux/unistd.h>
#include <linux/delay.h>
static struct timer_list my_timer;
void my_timer_callback(struct timer_list *timer)
{
printk("my_timer_callback called (%ld).n", jiffies);
mod_timer(&my_timer, jiffies + msecs_to_jiffies(10));
}
static int __init my_init(void)
{
printk("Timer module loadedn");
timer_setup(&my_timer, my_timer_callback, 0);
mod_timer(&my_timer, jiffies + msecs_to_jiffies(10));
return 0;
}
static void __exit my_exit(void)
{
printk("Timer module unloadedn");
del_timer(&my_timer);
}
module_init(my_init);
module_exit(my_exit);
MODULE_AUTHOR("[email protected]");
MODULE_LICENSE("GPL");
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
dmesg result:
[ 23.891867] my_timer_callback called (-27618).
[ 23.921886] my_timer_callback called (-27615).
[ 23.941895] my_timer_callback called (-27613).
[ 23.961872] my_timer_callback called (-27611).
kernel version: 5.10
.config:
CONFIG_HZ=100
New contributor
dragonkyl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.