2013-04-16 4 views
2

Мне нужно сделать некоторые опросы в ядре Linux, чтобы продолжить какое-то время, поэтому мне нужно спроектировать цикл while, который выйдет после некоторого интервала в миллисекундах. Так как я могу это сделать?Как запустить цикл while для миллисекунды в ядре linux?

У меня есть хотя бы gettimeofday(), но который можно использовать в пространстве пользователя, я хочу это в пространстве ядра.

+1

это не дублирует вопрос ... что вопрос разговор на пользовательское пространство, и я о пространстве ядра ... это было для получения точного времени здесь я заинтересован в бегах while цикл в течение некоторого времени –

ответ

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 */ 

Если у вас есть высокие таймеры разрешения на вашей системе, вы можете использовать его в течение времени по величине меньше, чем один миг. Обычно рассматривайте использование таймеров ядра или hrt.

+0

спасибо, что это сработало для меня .. –

-3

Вы можете использовать функцию sleep, например sleep(1): она остановит действие на 1 сек.

+1

Секунды не миллисекунды. – Lundin

Смежные вопросы