lspci 从哪里收集信息?

erc*_*rch 8 documentation proc

kernel.org 的文档中,proc我发现“[该文档的最新版本 可在线获取”。我在那里说:“……lspci 是”的同义词 cat /proc/pci

在 Crunchbang 10 系统(基于 Debian)上,情况并非如此。没有这样的目录。我确实得到了基本的想法,据我所知,内容proc是(主要)在运行时创建的。(错误的?)。这让我很好奇:

问题:从哪里lspci收集它的信息?这是在哪里记录的?(我在哪里错过了什么?)

 
我发现的另一个区别:在 kernel.org 的文档中,在“表 1-5:内核信息 /proc”下

pci     不推荐使用的 PCI 总线信息(新方式 -> /proc/bus/pci/,由`lspci 解耦)

gol*_*cks 10

lspci是 pciutils 的一部分,它可以移植到各种类似 Unix 的操作系统窗口,因此它可能根据平台使用不同的方法。

您应该能够通过strace lspci. 序言访问图书馆等之后,我(使用Fedora Linux系统)得到了很多的open()+pread()在东西呼叫/sys/bus/pci/,例如:

open("/sys/bus/pci/devices/0000:00:1c.7/config", O_RDONLY) = 3
pread(3, "\206\200\36\36\7\0\20\0\304\0\4\6\20\0\201\0\0\0\0\0\0\0\0\0\0\7\7\0\360\0\0
\0"..., 64, 0) = 64
close(3)   
Run Code Online (Sandbox Code Playgroud)

那是二进制数据。之后它读入/usr/share/hwdata/pci.ids,这是一个与 pciutils 包一起分发的静态通用列表。这些是四位数字代码,大概对应于来自 的信息/sys