C/C++-API для получения информации об устройствах PCI

В моей программе, написанной для Linux на C++, я хотел бы отображать информацию (включая иерархию устройств) об устройствах PCI системы, выполняющей программу. Есть ли для этого C- или C++-Linux-API?

Я смотрю на /sys/devices и /sys/bus/pci/devices. Информация в этих каталогах довольно сырая, и я бы предпочел не реализовывать второй lspci.


person magmabyte    schedule 16.09.2014    source источник
comment
К сожалению, вам придется реализовать второй lspci.   -  person Daniel Kamil Kozar    schedule 16.09.2014
comment
Конечно, вы можете проанализировать вывод из lspci. Попробуйте функцию popen.   -  person Ben Voigt    schedule 16.09.2014


Ответы (1)


Я смотрю на /sys/devices и /sys/bus/pci/devices

Именно оттуда вы черпаете информацию. Лично я предпочитаю получать такую ​​информацию непосредственно оттуда. Но вы можете обнаружить, что libudev соответствует вашим потребностям. Однако имейте в виду, что udev, хотя и широко распространен, может отсутствовать в некоторых системах.

person datenwolf    schedule 16.09.2014
comment
libudev выглядит красиво и присутствует в моей целевой системе. У вас есть хорошая документация о том, как анализировать информацию в двух каталогах /sys? - person magmabyte; 16.09.2014
comment
@magmabyte: sysfs подробно описан в дереве документации исходного кода ядра Linux. Доступно для чтения в Интернете по адресу kernel.org/doc/Documentation/filesystems/sysfs.txt. и kernel.org/doc/Documentation/sysfs-rules.txt - person datenwolf; 16.09.2014