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



目前,我有一个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()?。

最新更新