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