Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sockets 将套接字代码与Linux PCI驱动程序接口_Sockets_Driver_Device_Pci - Fatal编程技术网

Sockets 将套接字代码与Linux PCI驱动程序接口

Sockets 将套接字代码与Linux PCI驱动程序接口,sockets,driver,device,pci,Sockets,Driver,Device,Pci,我有两个与PCI接口的设备。我还为两个使用通用套接字代码的设备编写了代码。这些设备最初是通过MII/以太网连接的 现在,我需要编写一个PCI设备驱动程序来在两个设备之间来回传输数据包 如何访问由套接字代码打开的文件描述符?这与访问字符设备文件相同吗 PCI驱动程序必须以某种方式捕获代码中读写的数据包 谢谢 你的问题的答案是:1你没有,2没有 文件描述符是一个用户空间概念,内核驱动程序不与用户空间概念交互。是的,它们是由内核实现的,但是其他设备驱动程序不能直接使用它们,甚至不应该间接使用它们 您要

我有两个与PCI接口的设备。我还为两个使用通用套接字代码的设备编写了代码。这些设备最初是通过MII/以太网连接的

现在,我需要编写一个PCI设备驱动程序来在两个设备之间来回传输数据包

如何访问由套接字代码打开的文件描述符?这与访问字符设备文件相同吗

PCI驱动程序必须以某种方式捕获代码中读写的数据包


谢谢

你的问题的答案是:1你没有,2没有

文件描述符是一个用户空间概念,内核驱动程序不与用户空间概念交互。是的,它们是由内核实现的,但是其他设备驱动程序不能直接使用它们,甚至不应该间接使用它们

您要做的是实现一些方法,这些方法将接收缓冲在内核可访问内存空间中的数据,并将其发送到硬件,然后从硬件接收数据,并在请求时将其写入内核可访问内存中的缓冲区

您可以通过实现字符设备驱动程序API和PCI设备驱动程序API,然后将驱动程序注册为PCI设备,然后注册为字符设备来实现这一点。虽然其中一些方法可能引用文件结构,但它们不是您所了解和喜爱的用户土地结构

对于实现以太网协议的设备,由于您实现的是网络设备接口,因此生活更轻松。通过这种方式,您只需编写从硬件获取数据所需的部分

您需要的是设备硬件的规范,以及如何使用PCI寄存器和区域控制硬件

好消息是,您不必单独完成这项工作——有大量内核开发人员社区,下面有几本关于Linux内核开发的好书和最新书籍

参考资料


谢谢你的快速回复!让我看看我是否明白你写的。。我必须为目标设备编写一个PCI驱动程序。驱动程序还将分配一个带有所有TX/RX功能的以太网接口。现在我打开一个插座,这就是我困惑的地方。您是否有关于将创建的套接字链接/绑定到特定以太网PCI设备的信息?我不想通过另一个PCI以太网设备传输数据。为了使您的设备显示为可能的网络接口,您必须将驱动程序加载到内存中。驱动程序将注册与您的设备匹配的PCI ID。之后,您需要使用类似于将IP地址映射到eth0的网络地址来配置驱动程序。在这一点上,无论出于何种目的,它都是一张网卡,并且被操作系统视为网卡。