qemu定时器模仿内核定时器:
内核定时器函数:
1)定义定时器: struct timer_list my_timer;
2)初始化定时器:init_timer(&my_timer);
my_timer.expires = jiffies + delay; /* 定时器超时时的节拍数 */
my_timer.data = 0; /* 给定时器处理函数传入0值 */
my_timer.function = my_function; /* 定时器超时时调用的函数 */
my_timer.expires表示超时时间,它是以节拍为单位的绝对计数值。如果当前jiffies计数等于或大于它,处理函数开始执行。处理函数必须符合下面的函数原形:
3) 激活定时器:add_timer(&my_timer);
4)更改已经激活的定时器超时时间:mod_timer(&my_timer, jiffies+new_delay);
mod_timer()函数也可以操作那些已经初始化,但还没有被激活的定时器,它会同时激活它。一旦从mod_timer()函数返回,定时器都将被激活而且设置了新的定时值。
5)del_timer(&my_timer); 或 del_timer_sync()删除定时器
qemu定时器:
1) 创建定时器:qemu_new_timer()
2) 删除定时器:qemu_del_timer()
3) 更改定时器超时时间: qemu_mod_timer()