以太网驱动程序-不使用DMA



我正在编写一个以太网驱动程序。我想分两步来做:

  1. 不使用DMA(简单内存)进行写入
  2. 使用DMA重写它

我想问一下,在不使用DMA的情况下,是否可以先这样做(或者内核以太网框架坚持驱动程序应该使用DMA)?

内核不会阻止您做任何事情。但具体来说,我看不出它会阻止你写skbuff,也不会阻止你映射设备内存。

老实说,如果你想找到不使用DMA的网络驱动程序代码的例子,你可能会遇到最大的困难。如果我理解正确的话,即使是Linux netpoll(用于通过网络进行故障日志记录)也无法避免驱动程序中的DMA。

我不确定memcpy()是否能工作。。。

您需要阅读您的文档(例如,特别是)。看来您需要在IO内存上使用memcpy_fromio()memcpy_toio()

最新更新