Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

デバイス DMA の種類

デバイスは、次の 3 種類の DMA のいずれかを実行します。

  • バスマスター DMA

  • サードパーティー DMA

  • ファーストパーティー DMA

バスマスター DMA

ドライバは、デバイスが本物のバスマスターのように動作する場合に、そのデバイスの DMA レジスタを直接プログラミングします。たとえば、DMA エンジンがデバイスボード上にある場合、デバイスはバスマスターのように動作します。転送のアドレスとカウントが DMA cookie から取得されてデバイスに渡されます。

サードパーティー DMA

サードパーティー DMA はメインシステムボード上にあるシステムの DMA エンジンを使用します。メインシステムボードには、デバイスで使用できる DMA チャネルがいくつか備わっています。デバイスとメモリー間のデータ転送には、システムの DMA エンジンが使用されています。ドライバは、DMA エンジンのルーチン (ddi_dmae(9F) 関数を参照) を使用して DMA エンジンの初期化とプログラミングを行います。DMA データ転送ごとに、ドライバは DMA エンジンをプログラミングし、そのエンジンと連携して転送を開始するためのコマンドをデバイスに提供します。

ファーストパーティー DMA

ファーストパーティー DMA では、デバイスはシステムの DMA エンジンのチャネルを使用して、そのデバイスの DMA バスサイクルを作動させます。ddi_dmae_1stparty(9F) 関数を使用して、DMA エンジンが転送の妨げにならないように、カスケードモードでこのチャネルを構成します。