android - hrtimer 的触发时间比我设定的要早

标签 android c timer callback kernel

我正在尝试设置一个 hrtimer 以绝对间隔生成周期函数回调。

将计时器初始化为

hrtimer_init(&p->rt_track.rt_period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); 

函数分配的完成方式为

p->rt_track.rt_period_timer.function = new_period_actions; 

函数原型(prototype)为

enum hrtimer_restart new_period_actions(struct hrtimer *timer); 

将计时器设置为

hrtimer_start(&p->rt_track.rt_period_timer, ktime_set(t.tv_sec, t.tv_nsec), HRTIMER_MODE_REL); 

即使 timespec t = (10 secs , 0 ns) (当我测试时),计时器仍会在几毫秒内继续运行,我猜会导致内核因压倒系统而崩溃。

我想通过编程 timespec t 来控制计时器回调持续时间。

有人可以告诉我我可能做错了什么吗?

最佳答案

使用定时器转发解决了这个问题

now = hrtimer_cb_get_time(timer);

hrtimer_forward(timer, now,ktime_set(rtt->T.tv_sec,rtt->T.tv_nsec) );

关于android - hrtimer 的触发时间比我设定的要早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317035/

相关文章:

android - 使用电话号码登录 : How to prevent people from registering with another phone number?

安卓独立包

c# - PInvoke 使堆栈不平衡

c# - 当没有其他对象引用它们时,Timer 对象是否会被 GC-ed?

javascript - 无法导航到 jquerymobile/phonegap 中动态添加的页面

android - 按 mime 类型从电话簿中选择联系人

c# - System.Timers.Timer在Azure辅助角色中徘徊

java - ScheduleAtFixedRate 使整个应用程序崩溃

c - "Expected identifier or ' ( ' before int"尝试同时使用定义和函数时出错

计算字符的出现次数并将其打印出来