我遇到了一种情况,我需要在dma_sync_single_for_cpu之后打电话给dma_sync_single_for_cpu。下面是我的设想。
kmalloc()为缓冲区分配内存dma_map_single将缓冲区映射到具有DMA_FROM_DEVICE方向的设备。dma_sync_single_for_cpu获取缓冲区所有权。dma_unmap_single方向的DMA_FROM_DEVICE。以上所有步骤都可以接受吗?
发布于 2015-12-19 17:18:04
缓冲区“所有权”(CPU或设备)只在决定允许谁访问缓冲区的内容时才起作用。
dma_unmap_single()不关心内容;它可以在任何一种状态下调用。
请注意,DMA取消映射后,内存再次“属于”CPU。如果只执行一次DMA传输,则不需要调用dma_sync_single_for_cpu();只需在dma_unmap_single()调用之后读取缓冲区即可。
https://stackoverflow.com/questions/34349875
复制相似问题