我正在研究网络驱动程序,并且对内存管理有些困惑。在 TX 路径上,我收到一个 skb,因为下层期望只获得物理地址,我想我需要调用 *virt_to_phys* 并将返回值发送到下层。(是否有意义?)
现在,我知道有函数 *dma_map_single* 和 *dma_unmap_single*。我仍然不确定他们是如何来到这里的。所以下层想和DMA一起工作……这是否意味着我需要在将数据包分派到下层之前(在适当的时间)运行上述命令?
我也不确定我是否理解 dma_map_single 描述的含义
确保缓存中保存的任何数据都被适当地丢弃或写回。
感谢您的帮助。