ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
デバイスドライバの記述 Oracle Solaris 11.1 Information Library (日本語) |
パート I Oracle Solaris プラットフォーム用デバイスドライバの設計
2. Oracle Solaris カーネルとデバイスツリー
22. ドライバのコンパイル、ロード、パッケージ化、およびテスト
23. デバイスドライバのデバッグ、テスト、およびチューニング
パフォーマンスを向上させるため、CPU は内部ストアバッファーを使用して一時的にデータを格納します。内部バッファーを使用すると、デバイスの入出力処理の同期に影響が及ぶことがあります。したがって、ドライバは、明示的な手順を実行して、レジスタへの書き込みが適切なときに完了するようにする必要があります。
たとえば、レジスタやフレームバッファーなどのデバイス空間へのアクセスがロックによって同期される場合を考えてみます。ドライバは、デバイス空間への格納がロックの解放前に実際に完了したことを確認する必要があります。ロックの解放は、I/O バッファーのフラッシュを保証するものではありません。
別の例として、ドライバは通常、割り込みに対して確認応答するときに、デバイス制御レジスタのビットを設定またはクリアします。ドライバは、制御レジスタへの書き込みが割り込みハンドラの復帰前にデバイスに到達するよう保証する必要があります。同様に、デバイスに遅延が必要になることがあります。つまり、制御レジスタにコマンドを書き込んだあと、ドライバはビジー状態で待機します。そのような場合、ドライバは、遅延の前に書き込みがデバイスに到達するよう保証する必要があります。
好ましくない結果がなく、デバイスレジスタを読み取ることができる場合、書き込みの検証は、単純に書き込み直後のレジスタの読み取りで構成できます。好ましくない結果がなく、その特定のレジスタを読み取ることができない場合は、同じレジスタセット内の別のデバイスレジスタを使用できます。