【发布时间】:2015-04-17 01:07:36
【问题描述】:
我在表演
hrtimer_init(hr_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
过了一会儿(30,也许是 60 秒),我执行:
hrtimer_start(hr_timer, ktime_set(0, timeout), HRTIMER_MODE_REL);
在不到 1 秒的时间内,我立即执行
ktime_to_timeval(hrtimer_expires_remaining(hr_timer));
输出的 timeval 结构包含自 hrtimer_init 以来的时间,而不是从开始的时间。 遗憾的是,这种情况并非每次都发生,它只发生在我的众多计时器中的一个上(只发生在我初始化的第一个计时器上)。
有什么想法吗?
【问题讨论】:
-
看来,即使我在开始前的计时器上调用或不调用 hrtimer_cancel,hrtimer_start 的第一次返回 1 这意味着:已经激活,所以我的超时和整个 hrtimer_start 是只是忽略了。
-
你的内核版本是多少?你能发布一个最小的例子吗?
标签: linux time kernel linux-device-driver embedded-linux