如何在linux内核中运行while循环一段时间?

时间:2013-04-16 08:30:00

标签: c linux time timer linux-kernel

我需要在Linux内核中进行一些轮询持续一段时间,所以我需要设计while循环,在几毫秒间隔后退出。那我怎么能这样做呢?

我虽然使用gettimeofday(),但可以在用户空间使用,我想在内核空间中使用它。

2 个答案:

答案 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秒。