连接字符设备和物理PCIe驱动程序

时间:2015-08-17 00:58:42

标签: linux linux-kernel driver linux-device-driver

我正在修改现有的Linux设备驱动程序和库API。我的修改是允许多个设备(它目前是一个设备的硬编码)。我不理解的一个概念是字符设备和PCIe设备本身之间的映射。

在probe方法中初始化驱动程序时,我创建了一个字符设备(或多个)。库API使用此字符设备中的文件描述符进行IOCTL调用。但是在驱动程序本身中,它为包含PCI信息的设备维护一个全局变量。所以我的下一步是维护所有PCI设备的状态信息。

我不明白的是我创建的角色设备与驱动程序中的PCIe状态信息之间的链接。根据我的理解,创建了角色设备,当我打开它或IOCTL时,这些命令通过驱动程序进行映射。我不知道如何将我收到的字符设备链接到我想要控制的设备结构。

1 个答案:

答案 0 :(得分:2)

您可以使用次要设备编号来执行此操作。

在探测时,您可以注册具有相同主要编号和不同次编号的字符设备,并使用次编号映射您自己的结构。调用IOCTL时,您可以从cdev->dev获取次要编号,以便找到自己的结构。