目前,我有一个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()
读取它,但我认为使内核模块读取文件被认为是不好的做法。有没有更好的方法来实现我的目标?
答案 0 :(得分:0)
当不能使用像pci_get_device()
这样的函数时(因为模块也必须使用不提供此类函数的内核),显然没有比读取{{1}更好的获取PCI地址信息的方法了。 }。
我依据How to read/write files within a Linux kernel module?使用/sys/bus/pci/devices/.../resource
,filp_open()
和vfs_read()
来执行此操作。