Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为了编写PCI以太网驱动程序。如何在PCI以太网驱动程序中实现MMAP_Linux_Driver_Ethernet_Pci_Network Driver - Fatal编程技术网

Linux 为了编写PCI以太网驱动程序。如何在PCI以太网驱动程序中实现MMAP

Linux 为了编写PCI以太网驱动程序。如何在PCI以太网驱动程序中实现MMAP,linux,driver,ethernet,pci,network-driver,Linux,Driver,Ethernet,Pci,Network Driver,在以太网PCI设备驱动程序中,如果驱动程序允许应用程序将用户空间缓冲区映射到驱动程序虚拟内存,并允许用户在打开设备驱动程序文件后调用MMAP。那么如何在PCI以太网设备驱动程序中实现MMAP呢 我已经查看了dev_pci结构。有一些成员被命名为MMAP,因为他们与MMAP有关,但我无法精确指出如何使设备驱动程序实现MMAP 在《Linux设备驱动程序》一书中,作者没有明确地将设备驱动程序中的内存映射与PCI设备驱动程序或网络设备驱动程序联系起来 关于如何使我的PCI/网络/以太网设备驱动程序能够

在以太网PCI设备驱动程序中,如果驱动程序允许应用程序将用户空间缓冲区映射到驱动程序虚拟内存,并允许用户在打开设备驱动程序文件后调用MMAP。那么如何在PCI以太网设备驱动程序中实现MMAP呢

我已经查看了dev_pci结构。有一些成员被命名为MMAP,因为他们与MMAP有关,但我无法精确指出如何使设备驱动程序实现MMAP

在《Linux设备驱动程序》一书中,作者没有明确地将设备驱动程序中的内存映射与PCI设备驱动程序或网络设备驱动程序联系起来


关于如何使我的PCI/网络/以太网设备驱动程序能够处理来自用户空间的MMAP调用以及如何将用户映射到驱动程序的虚拟内存中的任何帮助,我正在寻找,特别是如何使用PCI和网络设备驱动程序在设备驱动程序中注册
XX_uuuMMAP(…)
实现功能。我在设备驱动程序中有dev_pci和net_dev设备驱动程序。

因此,基本上我必须将文件与包含pci dev的某个结构相关联。我的想法是在中断处理程序中获取数据包,并将其与某个虚拟映射区域或页面相关联。所以这是我的问题,如果我有struct
vm_area\u struct
,其中有vm_start&vm_end&offset,那么如何将数据包写入内核映射用户缓冲区的虚拟地址,我将在netdev_ops的轮询处理程序中执行此操作以接收数据包。这个问题是关于它是否有意义:
如果我在文件操作中使用char驱动程序对于mmap
和pci设备的pci驱动程序对于以太网设备,以及“两者都组合在一个驱动程序c文件中”和单个
\u init
。我想这是唯一的办法。除非有其他选择。请解释这将基本上导致intel
e1000e
以太网pci设备中启用mmap功能。driverI可能会使用pci.h中声明的
int-pci_-mmap_-page_-range
函数在内核虚拟内存中构建新页,我将在Driverk中的mmap实现函数中使用该函数。请不要回答我任何人都可以问:后门驱动程序就是这样工作的吗?我发现了一些我可能/可能不理解的东西?如果是,那么这是否意味着绕过内核堆栈是错误的[从技术上讲,不是指“是错误的”]