我有一种情况需要在dma_unmap_single
之后致电dma_sync_single_for_cpu
。以下是我的情景。
kmalloc()
dma_map_single
方向使用DMA_FROM_DEVICE
将缓冲区映射到设备。dma_sync_single_for_cpu
获取缓冲区所有权。dma_unmap_single
方向从设备取消映射缓冲区。 以上所有步骤都可以接受吗?
答案 0 :(得分:1)
缓冲区"所有权" (CPU或设备)仅用于决定允许谁访问缓冲区的内容。
dma_unmap_single()
不关心内容;它可以在任何一种状态下调用。
请注意,在DMA取消映射后,内存再次出现"属于#34;到CPU。如果您只进行一次DMA传输,则无需致电dma_sync_single_for_cpu()
;你可以在dma_unmap_single()
电话后阅读缓冲区。