使用 procfs 和 sysfs 访问 pci 设备有什么区别

what is the difference between accessing a pci device using procfs vs sysfs

procfs 文件:/proc/bus/pci/00/00.0

对比

sysfs 文件:/sys/bus/pci/devices/0000:00:00.0/resource

我看到有些驱动程序使用 procfs 文件,有些使用 sysfs。有什么不同?对于我需要的,我发现 mmap-ing sysfs/resource<n>? 文件和 read/write 可以按我的需要工作,但是对 procfs 文件的类似操作不起作用。但显然 procfs 文件在其他地方使用成功。

您引用的 procfs 文件 (/proc/bus/pci/00/00.0) 提供对设备配置的访问 header。它也可以在 sysfs 中作为 /sys/bus/pci/devices/0000:00:00.0/config.

访问

您正在谈论的 sysfs 文件 (/sys/bus/pci/devices/0000:00:00.0/resource<N>) 提供对设备的 BAR 区域的访问。有关关系的解释,请参阅 https://en.wikipedia.org/wiki/PCI_configuration_space。此外,您可能想阅读 linux 内核文档,网址为 https://www.kernel.org/doc/Documentation/filesystems/sysfs-pci.txt