目前,我有一个Linux 2.6内核模块,它通过pci_get_device()
和pci_read_config_dword()
访问某个设备。将来,该模块应被修改为也在不同的机器上工作,该机器似乎没有PCI总线(/sys/bus/PCI不存在),但在固定的已知地址上有特定的设备。现在,我想要一个模块二进制,不带参数,它在两台机器上都能工作。为了能够在非PCI机器上加载模块,我认为我必须避免使用pci_get_device()
等。;因此,我必须以其他方式在PCI机器上获得所需的配置空间信息。我可以在init_module()
中从/sys/bus/pci/devices/.../resource
中读取它,但我认为让内核模块读取文件是一种糟糕的做法。有更好的方法来实现我的目标吗?
当不能使用pci_get_device()
之类的函数时(因为模块必须与不提供此类函数的内核一起工作),显然没有比读取/sys/bus/pci/devices/.../resource
更好的方法来获取PCI地址信息。我在"如何在Linux内核模块中读/写文件?"的基础上使用了filp_open()
、vfs_read()
和filp_close()
?。