[英]difference between a pci device driver with “module_pci_driver” and a pci driver with “__init()” but without “module_pci_driver()” in Linux
[英]How can my kernel module access a PCI device without using pci_get_device()?
目前,我有一个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地址信息了。 /sys/bus/pci/devices/.../resource
。 我基于在Linux内核模块中如何读取/写入文件的方式使用filp_open()
, vfs_read()
和filp_close()
来执行此操作。 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.