Linux中的DMA和CPU驱动程序交互

时间:2015-03-07 02:07:07

标签: linux-kernel linux-device-driver dma

前几天我正在阅读一篇文章,作者在谈论DMA,以及它如何帮助将数据包通过PCI总线复制到内存中,而不涉及CPU。

然后它说:

  

唯一的开销是大约一毫秒,CPU需要唤醒并告诉驱动程序哪些数据包缓冲区是免费的。

这部分我不太明白 - 为什么CPU会告诉驱动程序有关可用的缓冲区以及它是如何工作的?任何链接/参考将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

一旦调用了驱动程序的transmit()等功能,硬件就“拥有”内存。没有你描述的行为,那个记忆就会泄露。因此,DMA子系统通知驱动程序/相关子系统硬件已“完成”访问内存。此时,它可以被回收以供其他人使用。