私はmsecs_to_jiffies(msecs)を使って遅延を取得しています。私は16ミリ秒の遅延が必要です。しかし問題は、入力1-10の場合は関数1を返し、11-20の場合は2、21-30の場合は3、息子の場合は関数3を返します。したがって、私は適切な遅延を設定することができません。私は10msのファクタでのみ遅延を設定することができます。私はHZ値を変えることができず、機能は眠ることもできません。msecからjiffiesへの変換
この問題の解決策をお勧めします。 ありがとう
私はmsecs_to_jiffies(msecs)を使って遅延を取得しています。私は16ミリ秒の遅延が必要です。しかし問題は、入力1-10の場合は関数1を返し、11-20の場合は2、21-30の場合は3、息子の場合は関数3を返します。したがって、私は適切な遅延を設定することができません。私は10msのファクタでのみ遅延を設定することができます。私はHZ値を変えることができず、機能は眠ることもできません。msecからjiffiesへの変換
この問題の解決策をお勧めします。 ありがとう
ナノ秒を使用している(あなたがシステムHZその後、低解像度での一定期間のための実行を中断したい場合は、高分解能タイマーを使用する必要があり、システムのHZの値が100
に設定されているようです解像度ではなく、jiffies)があなたのボードでサポートされ、カーネルで有効になっています。 http://lwn.net/Articles/167897/
したがって、システムHZを1000に変更し、1ミリ秒のジッピー解像度を得るか、高解像度タイマーを使用してください。
解像度の高いタイマーまたは1ミリ秒のジッピー解像度であっても、スレッドが16msec(わずかなウィグルルームでも)だけスリープ/ディレイするという保証はありません。特殊なハードウェアと割り込みが必要です。 –
これはカーネルドライバであるため、スレッドなどのスケジュールされたエンティティが存在しない可能性があります。デバイスドライバは、必要に応じて先取りされることなく、簡単にカーネルを結びつけることができますが、それは悪い考えです。 – nos
@ MahmoudAl-Qudsi一回限りのモードをサポートできるタイマーと必要な解像度を除けば、特殊なハードウェアは必要ありません。 Linux-RTパッチを使って、Linuxが動作するリアルタイム操作が可能なOSが必要です。参照:https://www.osadl.org/Single-View.111+M59e3481cdfe.0.htmlレイテンシーの数字 – gby
あなたはできません正確に16msのための睡眠。 は少なくとも 16msですが、16msはスリープできます。これは、Linux(または他のデスクトップOS)が動作する方法ではなく、リアルタイムOSではなく、非決定論的な方法でスケジュールされており、実行できることは何もありません。
何をしようとしていても、別の方法で進む必要があります。あなたが提供した小さな情報で、私が言うことができることは、あなたがやろうとしていることはできないということです。
16msのスリープなしでの遅延は非常に悪いです。どの方法を使用しても、CPUを16ms固定することができます。 – nos