ドライバは、サードパーティー DMA に関する次の手順を実行します。
DMA チャネルを割り当てます。
ddi_dmae_getattr(9F) を使用してシステムの DMA エンジンの属性を取得します。
DMA オブジェクトをメモリー内にロックします。physio (9F) またはddi_umem_lock (9F) のマニュアルページを参照してください。
DMA リソースをオブジェクトに割り当てます。
ddi_dmae_prog(9F) を使用して、転送を行うようにシステムの DMA エンジンをプログラミングします。
必要なオブジェクト同期があれば、それを行います。
ddi_dmae_stop (9F) を使用して DMA エンジンを停止します。
DMA リソースを解放します。
DMA チャネルを解放します。
ハードウェアプラットフォームの中には、バス固有の方法で DMA 機能を制限しているものもあります。ドライバは ddi_slaveonly(9F) を使用して、DMA を使用できるスロット内にデバイスがあるかどうかを確認します。