5
dma_unmap_single
の後にdma_sync_single_for_cpu
の後に電話する必要がある状況があります。以下は私のシナリオです。dma_sync_single_for_cpuの後にdma_unmap_singleを呼び出すことはできますか?
kmalloc()
- を使用してバッファメモリを割り当てる
DMA_FROM_DEVICE
方向とdma_map_single
を使用してデバイスにバッファの地図。 - パケットを受信した後、
dma_sync_single_for_cpu
を使用してバッファの所有権を取得します。 - 同じバッファを使用するカーネルの他の機能がある場合は、
dma_unmap_single
とDMA_FROM_DEVICE
の方向を使用してデバイスからバッファをアンマップします。
上記の手順はすべて受け入れられますか?
DMAマップAPIはアドレス空間に関するもので、IOMMUが使用されているときにバウンスバッファとしての副作用がある可能性があります。説明した手順は、そのバッファへのアクセスに関してすべてがシリアル化されていれば問題ありません。 – 0andriy