以太网驱动程序 - 不使用 DMA?
ethernet driver - without using DMA?
我正在编写以太网驱动程序。我想分两步完成:
- 不使用 DMA 写入(简单的 memcpy)
- 使用 DMA 重写。
请问是否可以先不使用DMA(或者是内核以太网框架坚持驱动程序必须使用DMA)?
内核不会阻止您做任何事情。但具体来说,我看不到它会阻止您编写 skbuff,也不会映射设备内存。
老实说,如果您想找到不使用 DMA 的网络驱动程序代码示例,您可能会遇到最大的困难。如果我理解正确,即使 Linux netpoll(用于通过网络进行崩溃日志记录)也不会避免驱动程序中的 DMA。
虽然我不确定 memcpy()
是否可行...
您需要阅读文档 (e.g. and specifically)。看起来你需要在 IO 内存上使用 memcpy_fromio()
和 memcpy_toio()
。
我正在编写以太网驱动程序。我想分两步完成:
- 不使用 DMA 写入(简单的 memcpy)
- 使用 DMA 重写。
请问是否可以先不使用DMA(或者是内核以太网框架坚持驱动程序必须使用DMA)?
内核不会阻止您做任何事情。但具体来说,我看不到它会阻止您编写 skbuff,也不会映射设备内存。
老实说,如果您想找到不使用 DMA 的网络驱动程序代码示例,您可能会遇到最大的困难。如果我理解正确,即使 Linux netpoll(用于通过网络进行崩溃日志记录)也不会避免驱动程序中的 DMA。
虽然我不确定 memcpy()
是否可行...
您需要阅读文档 (e.g. and specifically)。看起来你需要在 IO 内存上使用 memcpy_fromio()
和 memcpy_toio()
。