しばらくの間、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 */
システムに高解像度のタイマーがある場合は、1 jiffy 未満の大きさの時間に使用できます。通常、カーネル タイマーまたはhrt
.
sleep
次のような機能を使用できますsleep(1)
。アクティビティを 1 秒間停止します。