オンライン:
Linux スラブ アロケーターの構造
Linux 仮想メモリ マネージャーについて
Linux デバイス ドライバー、第 3 版
Linux カーネル モジュール プログラミング ガイド
Linux でのデバイス・ドライバーの作成: 簡単なチュートリアル
書籍:
Linux カーネル開発 (第 2 版)
Essential Linux Device Drivers (最初の 4 ~ 5 章のみ)
役立つリソース:
Linux 相互参照(すべてのカーネルの検索可能なカーネル ソース)
2.6 カーネル シリーズでの API の変更
dma_sync_single_for_device
dma_sync_single_range_for_cpu
ファイルの少し上に呼び出しがあり、これがソース ドキュメントです (これはアーム用ですが、インターフェイスと動作は同じであると思います):
/**
380 * dma_sync_single_range_for_cpu
381 * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
382 * @handle: DMA address of buffer
383 * @offset: offset of region to start sync
384 * @size: size of region to sync
385 * @dir: DMA transfer direction (same as passed to dma_map_single)
386 *
387 * Make physical memory consistent for a single streaming mode DMA
388 * translation after a transfer.
389 *
390 * If you perform a dma_map_single() but wish to interrogate the
391 * buffer using the cpu, yet do not wish to teardown the PCI dma
392 * mapping, you must call this function before doing so. At the
393 * next point you give the PCI dma address back to the card, you
394 * must first the perform a dma_sync_for_device, and then the
395 * device again owns the buffer.
396 */