我有带有实时补丁的linux 3.14.12。
我正在为我的硬件编写linux驱动程序,在这个驱动程序中,我需要在一个精确的时间间隔内定期运行一些代码。此外,我需要在我的系统中使用NTP进行时间更新。问题是我目前正在使用hrtimer在单独的线程中创建时间间隔,如下所示:
static int time_interval_update_thread(void *arg)
{
int ret = 0;
__set_current_state(TASK_UNINTERRUPTIBLE);
while(!kthread_should_stop())
{
ret = schedule_hrtimeout_range(&next_time_int, 0, HRTIMER_MODE_ABS);
if (ret == -EINTR && !kthread_should_stop())
{
}
else if (ret == 0)
{
run_some_code();
next_time_int = ktime_add_ms(next_time_int, PERIODICAL_INTERVAL_MS);
}
__set_current_state(TASK_UNINTERRUPTIBLE);
}
return 0;
}
但问题是hrtimer不能使用CLOCK_MONOTONIC_RAW时钟源,但CLOCK_MONOTONIC不适合我的任务,因为CLOCK_MONOTONIC时钟源会受到NTP更新的影响。
那么有没有办法使用CLOCK_MONOTONIC_RAW时钟源来创建时间间隔?