作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一种情况需要在 dma_sync_single_for_cpu
之后调用 dma_unmap_single
。以下是我的场景。
kmalloc()
为缓冲区分配内存dma_map_single
和 DMA_FROM_DEVICE
方向将缓冲区映射到设备。dma_sync_single_for_cpu
获取缓冲区所有权。dma_unmap_single
和 DMA_FROM_DEVICE
方向从设备取消映射缓冲区。 以上所有步骤都可以接受吗?
最佳答案
缓冲区“所有权”(CPU 或设备)仅在决定允许谁访问缓冲区内容时才重要。
dma_unmap_single()
不关心内容;它可以在任一状态下调用。
请注意,在 DMA 取消映射后,内存再次“属于”CPU。如果您只进行一次 DMA 传输,则不需要调用 dma_sync_single_for_cpu()
;您可以在 dma_unmap_single()
调用后读取缓冲区。
关于我可以在 dma_sync_single_for_cpu 之后调用 dma_unmap_single 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349875/
我的代码使用流 DMA API 将分配的缓冲区映射到 DMA 区域,如下所示: void perform_dma(void *buffer) { dma_map_single(buffer..
我有一种情况需要在 dma_sync_single_for_cpu 之后调用 dma_unmap_single。以下是我的场景。 使用 kmalloc() 为缓冲区分配内存 使用 dma_map_si
我是一名优秀的程序员,十分优秀!