DMA転送をマップする。この線形バッファは、カーネルもしくはプロセスの仮想アドレス空間にマップされる。DMAマップにロードされていたマップをアンロードする。資源割り当てをブロックせず失敗することはない。同様に、DMAマップがアンロードされるときDMAマップのリソースは解放されない。3つの別のデータバッファ構造体がある。関数は、mbufチェーンに対して作用する。それぞれのデータバッファは、カーネル仮想記憶空間内にあると仮定される。構造体に対して作用する。構造体から取り出される。関数は、いずれの仮想アドレス空間にマップされない、未処理の(raw)メモリに対して作用する。関数でアンロードされる。この関数は、キャッシュおよびDMAバウンスを処理するのに必要な4つのDMA同期操作を行う。4つの操作は以下の通りである。BUS_DMASYNC_PREREADBUS_DMASYNC_POSTREADBUS_DMASYNC_PREWRITEBUS_DMASYNC_POSTWRITE方向は、ホストメモリの視点からのものである。操作を同時に行うことが可能である。これは、特にデバイス制御ディスクリプタのマッピングを同期させる場合に有効である。操作を混在させることはできない。オフセットと長さの引数も取る。これは一部分のみの同期をサポートするために用いられる。DMAで転送される場合には、マップ全体を同期させることは無駄があったり、ときには他の制御ディスクリプタを破壊する恐れもあり望ましくない可能性がある。よって指定される長さを渡すことで実行可能である。メモリ操作関数bus_dmaインターフェースのDMA-safeメモリを処理する関数はメモリ割り当てとメモリーマッピングの2つに分類される。指定された属性を持つメモリを割り当てる。指定できる属性は、割り当てるメモリ領域の大きさ、割り当てでのそれぞれのセグメントのアライメント、境界制約、そして割り当てに使用できるDMAセグメントの最大数である。配列に値を返し、配列内で有効なセグメント数を示す。このインターフェースによって割り当てられるメモリは、いずれの仮想アドレス空間にもマップされていない、未加工の(raw)メモリ[注7]である。関数で解放することができる。カーネルまたはユーザープロセスがこれらのメモリにアクセスするためには、カーネルアドレス空間またはプロセスアドレス空間のいずれかにマップされていなければならない。これらの操作は、DMA-safeメモリ処理関数群のうちのメモリマッピングに分類される関数によって行われる。関数は、指定されたDMA-safeな未加工(raw)のメモリをカーネルアドレス空間にマップする。マッピングのアドレスは、参照名渡しポインタに返り値としてセットされる。呼ぶことでアンマップ可能である。エントリーポイントを通してプロセスのアドレス空間にマップされる場合もある。これを行うため、VMシステムのデバイスページャは、マップする各ページ毎に繰り返しドライバを呼ぶ。モジュール[注8]を起動し、そしてその物理ページアドレスがプロセスのアドレス空間にマップされる。された領域を強制的にアンマップしなければならない(例えば活線挿抜可能なデバイスがシステムから取り除かれた場合)ということを指示するための手段はない。仮想記憶システムの将来のバージョンで対処されるであろう。インターフェースはそれに応じて整備される必要がある。[注7]これは、このインターフェースによって割り当てられたメモリに対してDMA転送マッピングの際に使われるインターフェースはbus_dmamap_load_raw()であることを意味する。[訳注5]ここで使われている「cookie」とは、訳注4で述べたopaqueな型の変数に対して実際に代入された値のことを指す。ここではそのまま「クッキー」という訳語を当てる。[注8]pmapモジュールは、NetBSD仮想記憶システムのマシン依存の階層である。読者がインターフェースによって分類して抜粋した代表的な形式の詳細について理解しやすいように、横並びの比較の形で示す。実装におけるデザインアプローチを理解するためには、それぞれのバスアダプタの相違点を理解することが必要である。これらのアダプタの一部は類似した内容および特徴を持つが、それぞれに対するソフトウェアインタフェースは極めて異なっている。実装についてもサポートしている。PCIと関連するバスに限定する。21071/21072(APECS)[文献1]であった。21064(EV4)、21064A(EV45)プロセッサで使用されるように設計されている。システムでも使用された。DMAウィンドウはダイレクトマップもしくはスキャッタギャザマップ操作のために使われる。スキャッタギャザページテーブルにはホストのRAMを使用する。上で使われる内蔵I/Oコントローラであった。システムでも同様に使われていた。DMAウィンドウはダイレクトマップもしくはスキャッタギャザマップ操作のために使われる。スキャッタギャザページテーブルにはホストのRAMを使用する。ベースのシステムで使われている。DMAウィンドウはダイレクトマップもしくはスキャッタギャザマップ操作のために使われる。スキャッタギャザページテーブルにはホストRAMを使用する。ブリッジ[注10]である。システムバスに接続されている。