背景
PCIe设备交互需要基于TLP报文,读取PCIe设备配置空间这些操作在linux内核比较方便,在用户态也有lspci、setpci等工具。如何自己手写一个用户态的PCIe设备,来扫描PCIe设备实现类似lspci的效果,本文是一个简单的实验借助 pciutils 库来扫描并显示系统里 PCI 设备的相关信息。
实现机制
libpci提供的接口来操作,包括分配pci句柄,初始化,扫描、读取信息,详细代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <pci/pci.h>
int main() {
struct pci_access *pci;
struct pci_dev *dev;
pci = pci_alloc();
if (!pci) {
fprintf(stderr, "无法分配 PCI 访问对象\n");
return 1;
}
pci_init(pci)

最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



