我需要在Linux内核中进行一些轮询持续一段时间,所以我需要设计while循环,在几毫秒间隔后退出。那我怎么能这样做呢?
我虽然使用gettimeofday()
,但可以在用户空间使用,我想在内核空间中使用它。
答案 0 :(得分:2)
使用msecs_to_jiffies
:
unsigned long j0,j1,delay;
delay = msecs_to_jiffies(20); /* 20 msec delay */
j0 = jiffies;
j1 = j0 + delay;
while (time_before(jiffies, j1))
/* do something */
如果您的系统上有高分辨率计时器,则可以使用它的幅度小于一个jiffy。通常考虑使用内核定时器或hrt
。
答案 1 :(得分:-3)
您可以使用sleep
功能,例如sleep(1)
:它会停止活动1秒。