ドライバコンテキストでのスピンロックと遅延に関する一般的な質問があります。私は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. 60秒の遅延対60秒の遅延aws-lambda/RDSエラーメッセージ?
- 3. 遅延マウスクリック0.5秒
- 4. javafxの遅延n秒
- 5. Linuxで高精度ナノ秒遅延を得る方法
- 6. ブーストでマイクロ秒の解析
- 7. 秒とマイクロ秒(Unix時間)からDateTimeOffset
- 8. Linuxカーネルモジュールでの遅延方法クリティカルセクション
- 9. JavaFXのフェードアウトカーソル数秒後に遅延
- 10. Swift 3.0:1秒未満の遅延
- 11. C#時間(マイクロ秒)
- 12. windows C++とマイクロ秒スリープの可能性
- 13. Active Directoryへのldap_bind()の遅延が5秒遅い
- 14. 遅延評価とPythonの遅延バインド?
- 15. ログインとシェルプロンプトの間に10秒の遅延があります。
- 16. 遅延起動完了アンドロイド、(30秒)が
- 17. Linuxでスピンロックを取得する
- 18. RxJava遅延オブザーバブルの遅延
- 19. スレッドの遅延 - 遅延
- 20. にnanosleepスリープ60マイクロ秒
- 21. 秒からミリメートルまでのフォーマット時間:ss:ms:マイクロ秒
- 22. 秒とナノ秒をマイクロ秒に変換する最速の(最適な)方法
- 23. Pythonでミリ秒とマイクロ秒の解像度のタイムスタンプを取得する方法
- 24. wpf 15秒の遅延でビデオをブロードキャストするアプリケーション
- 25. iOS AudioServicesAddSystemSoundCompletionコールバックで1秒の遅延が発生する
- 26. TimerCallbackが1秒の遅延で呼び出されないC#
- 27. STM32のCでナノ秒遅延を生成
- 28. SQL ExpressとSQL CE、遅延/遅延
- 29. DatetTimeにマイクロ秒とナノ秒を追加するには?
- 30. WindowsのネイティブPythonモジュールの15秒のアイドル遅延のロード