ドライバコンテキストでのスピンロックと遅延に関する一般的な質問があります。私はgpioで読み書きするLinuxドライバを持っています。読み出しおよび書き込み動作は単一のピンで行われ、完全にタイミングベースである(HDQプロトコル)。元のドライバはudelay()呼び出しを使用して実装されており、最悪のシナリオは約500 usです。 ドライバーは割り込みとして何も実装していません。特定のGPIOで通常の読み取りと書き込みのみを実装しています。gpio_get_value()とgpio_set_value()です。 これらの遅延の間に、ドライバにはスピンロックが含まれています。どれくらい安全ですか?私はスピンロックで囲まれたこれらの遅れに少しは関心があります。Linuxドライバコンテキストでのマイクロ秒の遅延とスピンロック
0
A
答えて
2
udelay
は、アトミックセクション(すなわち、スピンロックまたは割り込み)で安全に使用できます。すべての詳細についてはthe kernel timers howtoをご覧ください。
udelay
がビジー待機中であるため、パフォーマンスが懸念される可能性があります。ただし、スケジューリング可能なスリープが使用されている場合、正確ではないため、タイミング要件を満たすことは確実ではありません。 プロセッサの場合、usleep
は十分正確である必要がありますが、それはudelay
よりは確実ではありません。また、usleep
を呼び出すときにスピンロックを保持できないため、別の同期メカニズムを使用する必要があります。
関連する問題
- 1. LPC1768/ARM Cortex-M3マイクロ秒の遅延
- 2. Linuxで高精度ナノ秒遅延を得る方法
- 3. ブーストでマイクロ秒の解析
- 4. 秒とマイクロ秒(Unix時間)からDateTimeOffset
- 5. Swift 3.0:1秒未満の遅延
- 6. JavaFXのフェードアウトカーソル数秒後に遅延
- 7. C#時間(マイクロ秒)
- 8. windows C++とマイクロ秒スリープの可能性
- 9. Active Directoryへのldap_bind()の遅延が5秒遅い
- 10. 遅延起動完了アンドロイド、(30秒)が
- 11. ログインとシェルプロンプトの間に10秒の遅延があります。
- 12. スレッドの遅延 - 遅延
- 13. にnanosleepスリープ60マイクロ秒
- 14. 秒からミリメートルまでのフォーマット時間:ss:ms:マイクロ秒
- 15. 秒とナノ秒をマイクロ秒に変換する最速の(最適な)方法
- 16. Pythonでミリ秒とマイクロ秒の解像度のタイムスタンプを取得する方法
- 17. iOS AudioServicesAddSystemSoundCompletionコールバックで1秒の遅延が発生する
- 18. STM32のCでナノ秒遅延を生成
- 19. wpf 15秒の遅延でビデオをブロードキャストするアプリケーション
- 20. TimerCallbackが1秒の遅延で呼び出されないC#
- 21. SQL ExpressとSQL CE、遅延/遅延
- 22. DatetTimeにマイクロ秒とナノ秒を追加するには?
- 23. WCFリクエスト遅延が50秒ごとに発生する
- 24. トランザクションレプリケーションで1秒未満の遅延を得ることは可能ですか?
- 25. より多くのリクエスト/秒の処理の遅延
- 26. PHP - マイクロ秒で時間を数え、1秒で反応する
- 27. Linux/SMPスピンロックが不必要に遅くなっていますか?
- 28. 低遅延スレッド通信のためのWindowsスリープマイクロ秒
- 29. 遅延の進行状況バーを表示しますか?私は5秒の遅延があり、この5秒のユーザーにしたい私のアプリで
- 30. ルビー、遅延ジョブ、遅延:バックエンド:ActiveRecordの