我正在写一个以太网驱动程序。我想分2步完成:
我想问一下,如果不使用DMA就可以做到这一点(或者内核以太网框架是否坚持驱动程序应该使用DMA)?
答案 0 :(得分:3)
Kernel并没有阻止你做任何事情。但具体来说,我无法看到它阻止你编写skbuff,也不会映射设备内存。
老实说,如果您想找到不使用DMA的网络驱动程序代码示例,您可能会遇到最大困难。如果我理解正确,即使Linux netpoll(用于通过网络进行崩溃记录)也不会避免驱动程序中的DMA。
我不确定memcpy()
会起作用......
您需要阅读文档(e.g.和specifically)。看起来你需要在IO内存上使用memcpy_fromio()
和memcpy_toio()
。