カーネルISRルーチンで遅延を導入するために、msleepやusleepなどの関数を使用することはできません。
私は内部に定義された特定のISRを持つカーネルドライバを持っています。 ISRブロックの1つでは、ミリ秒オーダーの特定の遅延を挿入する必要があります。言うことができます:forループ上記は私の1000年USECS、すなわち1ミリ秒の遅延を与える、カーネルドライバで遅延を使用する方法
{
//A
for(i=0;i<1000;i++);
//B
}
は私のプロセッサが1Gbpsので実行されているとしましょう:
{
//A
//here I need sleep
//B
}
が、私はのようなものを使用することができますか?
関数 'udelay'と' ndelay'は* busy-waiting * delayを実装していますので、ISRで使用することができます。最初の機能の待機時間は、マイクロ秒(1/1,000,000)、その他の1ナノ秒(1/1 000 000 000)で測定されます。 – Tsyvarev
ええ、私はそれを後で実現しました。それはうまくいった。ありがとう。 – mdsingh