ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
デバイスドライバの記述 Oracle Solaris 10 8/11 Information Library (日本語) |
パート I Solaris プラットフォーム用デバイスドライバの設計
DMA ソフトウェアコンポーネント: ハンドル、ウィンドウ、cookie
21. ドライバのコンパイル、ロード、パッケージ化、およびテスト
デバイスは、次の 3 種類の DMA のいずれかを実行します。
バスマスター DMA
サードパーティー DMA
ファーストパーティー DMA
ドライバは、デバイスが本物のバスマスターのように動作する場合に、そのデバイスの DMA レジスタを直接プログラミングします。たとえば、DMA エンジンがデバイスボード上にある場合、デバイスはバスマスターのように動作します。転送のアドレスとカウントが DMA cookie から取得されてデバイスに渡されます。
サードパーティー DMA はメインシステムボード上にあるシステムの DMA エンジンを使用します。メインシステムボードには、デバイスで使用できる DMA チャネルがいくつか備わっています。デバイスとメモリー間のデータ転送には、システムの DMA エンジンが使用されています。ドライバは、DMA エンジンのルーチン (ddi_dmae(9F) 関数を参照) を使用して DMA エンジンの初期化とプログラミングを行います。DMA データ転送ごとに、ドライバは DMA エンジンをプログラミングし、そのエンジンと連携して転送を開始するためのコマンドをデバイスに提供します。
ファーストパーティー DMA では、デバイスはシステムの DMA エンジンのチャネルを使用して、そのデバイスの DMA バスサイクルを作動させます。ddi_dmae_1stparty(9F) 関数を使用して、DMA エンジンが転送の妨げにならないように、カスケードモードでこのチャネルを設定します。