現在、組み込み Linux デバイス (バージョン 2.6.28.10) にユーザー空間アプリケーションがあり、GPIO ピンを切り替えてカスタム ハードウェアを制御しています。GPIO レジスタへの書き込みはpthreads
、デバイスへのアクセスを必要とする個別のものから発生します。semaphore
GPIO 書き込みを同時に行うセクションに複数のスレッドがアクセスするのを防ぐ ため、ほとんどの場合、これは正常に機能します。
問題は、これらの GPIO レジスタへの書き込み (約 24 回の 8 ビット書き込み) の途中で、別のスレッドwill interrupt
が現在のスレッドであり、割り込みスレッドがセマフォのためにレジスタを変更できないにもかかわらず、書き込み中のスレッドに制御が返されないことです。もちろん、外部デバイスに送信されたデータは無効になります。
この一連の GPIO 書き込み (合計で約 50 usecs を要します) が別のスレッドによって中断されないようにする方法は Linux にありますか?