0

遅延を取得するためにmsecs_to_jiffies(msecs)を使用しています。16ミリ秒の遅延が必要です。ただし、問題は、入力1〜10の場合は1、11〜20の場合は2、21〜30の場合は3を返す関数です。したがって、適切な遅延を設定できません。遅延は10ミリ秒の係数でしか設定できません。HZ値を変更できず、関数もスリープできません。

この問題の解決策を提案してください。ありがとう

4

2 に答える 2

4

あなたは正確に16msの間眠ることができません。あなたは少なくとも16msの間眠ることができますが、16msはできません。これは、Linux(またはその他のデスクトップOS)の動作方法ではありません。リアルタイムOSではなく、非決定論的な方法でスケジュールされており、それについて何もできません。

あなたがやろうとしていることは何でも、あなたはそれについて別の方法で行かなければならないでしょう。あなたが提供した情報がほとんどないので、私が言えるのは、あなたがやろうとしていることはできないということだけです。

于 2012-05-09T05:22:48.580 に答える
4

システムのHZ値が100に設定されているようです。

システムHZよりも低い解像度で一定期間実行を一時停止する場合は、ボードでサポートされ、カーネルで有効になっている高解像度タイマー(jiffiesではなくnsec解像度を使用)を使用する必要があります。それらの使用方法のインターフェースについては、http://lwn.net/Articles/167897/を参照してください。

したがって、システムのHZを1000に変更して1ミリ秒の瞬間分解能を取得するか、高分解能タイマーを使用します。

于 2012-05-09T05:32:53.477 に答える