linux – 如何解释 procbuspcidevices的内容?

linux – 如何解释 procbuspcidevices的内容?,第1张

概述“cat / proc / bus / pci / devices”的前几个字段是可以理解的. 字段1 – BusDevFunc 字段2 – 供应商ID设备标识 字段3 – 中断线 字段4 – BAR 0 和其余的BAR寄存器(0-5)之后. 打印出BAR寄存器后,其他字段是什么?具体来说,打印出PCI配置空间寄存器(偏移量)? 这是内核中相应的代码: static int show_device “cat / proc / bus / pci / devices”的前几个字段是可以理解的.

字段1 – BusDevFunc
字段2 – 供应商ID设备标识
字段3 – 中断线
字段4 – bar 0
和其余的bar寄存器(0-5)之后.

打印出bar寄存器后,其他字段是什么?具体来说,打印出PCI配置空间寄存器(偏移量)?

解决方法 这是内核中相应的代码:
static int show_device(struct seq_file *m,voID *v){    const struct pci_dev *dev = v;    const struct pci_driver *drv;    int i;    if (dev == NulL)        return 0;    drv = pci_dev_driver(dev);    seq_printf(m,"%02x%02x\t%04x%04x\t%x",dev->bus->number,dev->devfn,dev->vendor,dev->device,dev->irq);    /* Here should be 7 and not PCI_NUM_RESOURCES as we need to preserve compatibility */    for (i=0; i<7; i++) {        resource_size_t start,end;        pci_resource_to_user(dev,i,&dev->resource[i],&start,&end);        seq_printf(m,"\t%16llx",(unsigned long long)(start |            (dev->resource[i].flags & PCI_REGION_FLAG_MASK)));    }    for (i=0; i<7; i++) {        resource_size_t start,dev->resource[i].start < dev->resource[i].end ?            (unsigned long long)(end - start) + 1 : 0);    }    seq_putc(m,'\t');    if (drv)        seq_printf(m,"%s",drv->name);    seq_putc(m,'\n');    return 0;}

在IRQ之后,它似乎是与前6个资源区域的标志相结合的起始地址,其后是这些资源区域的长度,后面是已声明设备的驱动程序的名称.

总结

以上是内存溢出为你收集整理的linux – 如何解释/ proc / bus / pci / devices的内容?全部内容,希望文章能够帮你解决linux – 如何解释/ proc / bus / pci / devices的内容?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存