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

时间:2016-07-29 18:58:04

标签: networking linux-kernel linux-device-driver ethernet

我正在写一个以太网驱动程序。我想分2步完成:

  1. 在没有DMA的情况下编写它(简单的memcpy)
  2. 使用DMA重写它。
  3. 我想问一下,如果不使用DMA就可以做到这一点(或者内核以太网框架是否坚持驱动程序应该使用DMA)?

1 个答案:

答案 0 :(得分:3)

Kernel并没有阻止你做任何事情。但具体来说,我无法看到它阻止你编写skbuff,也不会映射设备内存。

老实说,如果您想找到不使用DMA的网络驱动程序代码示例,您可能会遇到最大困难。如果我理解正确,即使Linux netpoll(用于通过网络进行崩溃记录)也不会避免驱动程序中的DMA。

我不确定memcpy()会起作用......

您需要阅读文档(e.g.specifically)。看起来你需要在IO内存上使用memcpy_fromio()memcpy_toio()