gpt4 book ai didi

c - Linux 内核 : Is it OK to leave a streaming DMA mapping open indefinitely?

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

许多关于设备驱动程序编程的指南建议流式 DMA 映射(即由 dma_map_single() 和 friend 创建的映射)尽可能短地保持打开状态,因为它们会消耗资源(即IOMMU 映射资源(如果平台有的话),或者在需要时有反弹缓冲区)。

在我的例子中,我使用的是支持 64 位 DMA 的 PCIe 设备,因此应该不需要反弹缓冲区(而且在这种情况下似乎也不需要 IOMMU 的特殊处理,正确的?)。数据来自设备(即它与 DMA_TO_CPU 映射),当新数据通过中断可用时设备会通知我,此时我触发 dma_sync_for_cpu() 在访问刚刚通过 DMA 发送给我的数据之前。

还有其他原因我不应该无限期地让映射保持打开状态(当然,直到数据使用者关闭为止)吗?

最佳答案

我在 Linux 内核源代码中至少发现了一个实例,其中流式 DMA 映射可能会在不确定的时间内保持打开状态:

在用于处理等时DMA的火线驱动程序代码(drivers/firewire/core-iso.c)中,当用户空间调用mmap()时建立DMA映射,并且只要用户空间保持设备打开,此映射就会保持打开状态。

关于c - Linux 内核 : Is it OK to leave a streaming DMA mapping open indefinitely?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979107/

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