我需要在 Linux 内核中进行一些轮询以继续一段时间,所以我需要设计在几毫秒间隔后退出的 while 循环。那么我该怎么做呢?
我虽然可以使用gettimeofday()
,但可以在用户空间使用,我希望在内核空间使用它。
我需要在 Linux 内核中进行一些轮询以继续一段时间,所以我需要设计在几毫秒间隔后退出的 while 循环。那么我该怎么做呢?
我虽然可以使用gettimeofday()
,但可以在用户空间使用,我希望在内核空间使用它。
使用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 */
如果您的系统上有高分辨率计时器,您可以使用它的时间量级小于一瞬间。一般考虑使用内核定时器或hrt
.
您可以使用该sleep
功能,例如sleep(1)
:它将停止活动 1 秒。