以太网驱动程序 - 不使用DMA?
问题描述:
我在写一个以太网驱动程序。我想这样做在2个步骤:以太网驱动程序 - 不使用DMA?
- 写它没有DMA(简单的memcpy)使用DMA
- 改写它。
我想问一下,如果不使用DMA(或者内核以太网框架坚持驱动程序应该使用DMA),是否有可能先执行它?
答
内核不会阻止你做任何事情。但具体而言,我看不到它阻止你写skbuffs,也没有映射设备内存。
老实说,如果您想查找不使用DMA的网络驱动程序代码示例,您可能会遇到最大困难。如果我理解正确,即使是Linux netpoll(用于通过网络进行崩溃记录)也不会避免驱动程序中的DMA。
我不知道memcpy()
会的工作,虽然...
您需要阅读您的文档(e.g.和specifically)。看起来你需要在IO内存上使用memcpy_fromio()
和memcpy_toio()
。