我正在编写一个以太网驱动程序。我想分两步来做:
- 不使用DMA(简单内存)进行写入
- 使用DMA重写它
我想问一下,在不使用DMA的情况下,是否可以先这样做(或者内核以太网框架坚持驱动程序应该使用DMA)?
内核不会阻止您做任何事情。但具体来说,我看不出它会阻止你写skbuff,也不会阻止你映射设备内存。
老实说,如果你想找到不使用DMA的网络驱动程序代码的例子,你可能会遇到最大的困难。如果我理解正确的话,即使是Linux netpoll(用于通过网络进行故障日志记录)也无法避免驱动程序中的DMA。
我不确定memcpy()
是否能工作。。。
您需要阅读您的文档(例如,特别是)。看来您需要在IO内存上使用memcpy_fromio()
和memcpy_toio()
。