2014-10-11 33 views
0

我想設置一個hrtimer以絕對間隔生成周期函數回調。hrtimer比我編寫的程序更早關閉

初始化定時器作爲

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

功能分配正在做的

p->rt_track.rt_period_timer.function = new_period_actions; 

函數原型爲

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秒,0 nsecs)(當我正在測試時),定時器在幾毫秒內繼續運行,導致內核崩潰,因爲我猜測系統壓倒了系統。

我想通過編程timespec t來控制定時器的回調持續時間。

有人可以告訴我我可能做錯了什麼嗎?

回答

0

使用定時器轉發它解決

now = hrtimer_cb_get_time(timer); 

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