我的内核模块如何在不使用pci_get_device()的情况下访问PCI设备?

时间:2013-07-15 13:01:19

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

目前,我有一个Linux 2.6内核模块,可通过pci_get_device()pci_read_config_dword()访问某个设备。将来,模块应修改为工作一台似乎没有PCI总线的不同机器(/ sys / bus / pci不存在),但是某个设备是固定的,已知地址。现在,我希望一个模块二进制没有参数,这些参数适用于两台机器。为了能够在非PCI机器上加载模块,我想我必须避免使用pci_get_device()等;因此,我必须以其他方式在PCI机器上获得所需的配置空间信息。我可以在我的/sys/bus/pci/devices/.../resource中从init_module()读取它,但我认为使内核模块读取文件被认为是不好的做法。有没有更好的方法来实现我的目标?

1 个答案:

答案 0 :(得分:0)

当不能使用像pci_get_device()这样的函数时(因为模块也必须使用不提供此类函数的内核),显然没有比读取{{1}更好的获取PCI地址信息的方法了。 }。 我依据How to read/write files within a Linux kernel module?使用/sys/bus/pci/devices/.../resourcefilp_open()vfs_read()来执行此操作。