/sys/bus/pci/device/0000下的资源文件:xx:xx.x /资源包含



我正在做一个项目,从pci配置空间读取设备的寄存器,为此我需要映射空间,为此我必须读取资源文件。但是这个文件包含什么数据。通过查看它,它希望保存一些地址。我在某个地方搜索并阅读了这些BAR,但最多只有6个BAR,那么其他字段是什么?文件内容为:

0x000000000000fc00 0x000000000000fcff 0x0000000000020101
0x00000000dcff0000 0x00000000dcffffff 0x0000000000120204
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000dcf80000 0x00000000dcfbffff 0x0000000000120204
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000dc000000 0x00000000dc0fffff 0x0000000000027200
0x00000000dc500000 0x00000000dc5fffff 0x0000000000120204
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000dc100000 0x00000000dc4fffff 0x0000000000120204
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000

这些特殊文件记录在Documentation/filesystems/sysfs-pci.txt中。

resource文件中包含PCI资源的主机地址。然后你有resource1, resource2等文件与每个区域的内容。

我知道这是一个老问题,但我的谷歌把我带到这里,我没有意识到它的答案,@duanev似乎是正确的。相关代码可以在pci-sysfs.c

中的resource_show(…)中找到。
struct resource *res =  &pci_dev->resource[i];
pci_resource_to_user(pci_dev, i, res, &start, &end);
str += sprintf(str, "0x%016llx 0x%016llx 0x%016llxn",
           (unsigned long long)start,
           (unsigned long long)end,
           (unsigned long long)res->flags);

最新更新