ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
デバイスドライバの記述 Oracle Solaris 11.1 Information Library (日本語) |
パート I Oracle Solaris プラットフォーム用デバイスドライバの設計
2. Oracle Solaris カーネルとデバイスツリー
DMA ソフトウェアコンポーネント: ハンドル、ウィンドウ、cookie
22. ドライバのコンパイル、ロード、パッケージ化、およびテスト
23. デバイスドライバのデバッグ、テスト、およびチューニング
DDI/DKI (Oracle Solaris Device Driver Interface/Driver-Kernel Interface) には、アーキテクチャーに依存しないハイレベルな DMA モデルが用意されています。このモデルを使用すると、フレームワーク (つまり DMA ルーチン) で次のようなアーキテクチャー固有の詳細を隠すことができます。
DMA マッピングの設定
scatter/gather リストの作成
入出力と CPU 間のキャッシュの一貫性の確保
DDI/DKI では、DMA トランザクションのさまざまな局面を記述するためにいくつかの抽象化が使用されます。
DMA ハンドル – 正常に実行された ddi_dma_alloc_handle(9F) 呼び出しから返される不透明なオブジェクト。DMA ハンドルをそのあとの DMA サブルーチン呼び出しで使用すると、そのような DMA オブジェクトを参照できます。
DMA cookie – ddi_dma_cookie(9S) 構造体 (ddi_dma_cookie_t) では、デバイスから完全にアドレス可能な DMA オブジェクトの連続した部分を記述します。cookie には、DMA エンジンのプログラミングに必要な DMA アドレッシング情報が含まれています。
デバイスドライバは、オブジェクトを直接メモリー内にマップするのではなく、DMA 資源をメモリーオブジェクトに割り当てます。次に、DMA ルーチンは DMA アクセス用のオブジェクトの設定に必要なプラットフォーム固有のすべての操作を実行します。ドライバは DMA ハンドルを受け取って、オブジェクトに割り当てられている DMA 資源を特定します。このハンドルはデバイスドライバに対して不透明です。ドライバはこのハンドルを保存し、そのあとの呼び出しで DMA ルーチンに渡す必要があります。ドライバがこのハンドルを解釈することはありません。
次のサービスを提供する処理は DMA ハンドルで定義されます。
DMA 資源の操作
DMA オブジェクトの同期
割り当てられた資源の属性の取り出し