Proc

lspci 從哪裡收集資訊?

  • December 1, 2013

kernel.org 的文件中,proc我發現“[該文件的最新版本 可線上獲取”。我在那裡說:“……lspci 是”的同義詞 cat /proc/pci

在 Crunchbang 10 系統(基於 Debian)上,情況並非如此。沒有這樣的目錄。我確實得到了基本的想法,據我所知,內容proc(主要)是在執行時創建的。(錯誤的?)。這讓我很好奇:

問題:從哪裡lspci收集資訊?這在哪裡記錄?(我哪裡漏掉了什麼?)

 

我發現的另一個區別:在 kernel.org 的文件中,在“ Table 1-5: Kernel info in /proc ”下

pci     PCI 匯流排的棄用資訊(新方式 -> /proc/bus/pci/,由 `lspci 解耦)

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)   

那是二進制數據。之後它讀入/usr/share/hwdata/pci.ids,這是一個與 pciutils 包一起分發的靜態通用列表。這些是四位數的程式碼,大概對應於來自 的資訊/sys

引用自:https://unix.stackexchange.com/questions/103269