I need to get Vendor ID and Device ID of all PCI bus Devices from Linux using C/C++ (inline asm allowed), but I can't even understand from what to start.
Please, give me some pieces of advice or code parts.
How to get Vendor ID and Device ID of all PCI Devices?
In short, you have to write a C program that does:
grep PCI_ID /sys/bus/pci/devices/*/uevent
Sample output lines:
/sys/bus/pci/devices/0000:00:00.0/uevent:PCI_ID=1022:14E8
/sys/bus/pci/devices/0000:00:00.2/uevent:PCI_ID=1022:14E9
/sys/bus/pci/devices/0000:00:01.0/uevent:PCI_ID=1022:14EA
/sys/bus/pci/devices/0000:00:02.0/uevent:PCI_ID=1022:14EA
And extract relevant data after = and after :.
So what you have to do is:
/sys/bus/pci/devices with readdir_rPCI_ID is foundsscanf(line, "PCI_ID=%4x:%4x\n", &vendor_id, &device_id)I couldn't find any documentation about uevent inside /sys/bus/pci/devices. This answer is based on reverse engineering busybox lspci.c sources.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With