![](/img/trans.png)
[英]Linux Kernel Driver - physical CPU memory not updated. DMA problem
[英]DMA in Linux and CPU-driver interaction
前几天,我在阅读一篇文章时,作者在谈论DMA,以及它如何在不涉及CPU的情况下将数据包通过PCI总线复制到内存中。
然后它说:
唯一的开销是大约每毫秒一次,CPU需要唤醒并告诉驱动程序哪些数据包缓冲区可用。
这部分我不太了解-为什么CPU会告诉驱动程序可用的缓冲区以及它如何工作? 任何链接/参考将不胜感激。
谢谢。
调用驱动程序的transmit()
等函数后,硬件将“拥有”内存。 没有您描述的行为,该内存将被泄漏。 因此,DMA子系统会通知驱动程序/相关子系统,硬件已“完成”访问内存。 在那时,可以将其回收以供其他人使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.