gpt4 book ai didi

我可以在 dma_sync_single_for_cpu 之后调用 dma_unmap_single 吗?

转载 作者:太空狗 更新时间:2023-10-29 15:07:55 25 4
gpt4 key购买 nike

我有一种情况需要在 dma_sync_single_for_cpu 之后调用 dma_unmap_single。以下是我的场景。

  1. 使用 kmalloc() 为缓冲区分配内存
  2. 使用 dma_map_singleDMA_FROM_DEVICE 方向将缓冲区映射到设备。
  3. 接收数据包后,使用dma_sync_single_for_cpu 获取缓冲区所有权。
  4. 一段时间后,如果内核中的某些其他函数使用相同的缓冲区,则使用 dma_unmap_singleDMA_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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com