Steward
分享是一種喜悅、更是一種幸福
驅動程式 - Linux Device Driver (LDD) - 使用範例 - C/C++ (Debian) - Enumerate PCI Device
main.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/pci.h>
int ldd_init(void)
{
struct pci_dev *pdev = NULL;
for_each_pci_dev(pdev)
printk("PCI Device: %04x:%02x:%02x.%d "
"Vendor=%04x Device=%04x "
"Class=%06x\n",
pci_domain_nr(pdev->bus),
pdev->bus->number,
PCI_SLOT(pdev->devfn),
PCI_FUNC(pdev->devfn),
pdev->vendor,
pdev->device,
pdev->class >> 8
);
return 0;
}
void ldd_exit(void)
{
}
module_init(ldd_init);
module_exit(ldd_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Steward Fu");
MODULE_DESCRIPTION("Linux Driver");
$ sudo dmesg
[33818.475592] PCI Device: 0000:00:00.0 Vendor=8086 Device=0150 Class=000600
[33818.475600] PCI Device: 0000:00:02.0 Vendor=8086 Device=0152 Class=000300
[33818.475602] PCI Device: 0000:00:14.0 Vendor=8086 Device=1e31 Class=000c03
[33818.475604] PCI Device: 0000:00:16.0 Vendor=8086 Device=1e3a Class=000780
[33818.475605] PCI Device: 0000:00:16.3 Vendor=8086 Device=1e3d Class=000700
[33818.475607] PCI Device: 0000:00:19.0 Vendor=8086 Device=1502 Class=000200
[33818.475608] PCI Device: 0000:00:1a.0 Vendor=8086 Device=1e2d Class=000c03
[33818.475610] PCI Device: 0000:00:1b.0 Vendor=8086 Device=1e20 Class=000403
[33818.475611] PCI Device: 0000:00:1d.0 Vendor=8086 Device=1e26 Class=000c03
[33818.475613] PCI Device: 0000:00:1f.0 Vendor=8086 Device=1e47 Class=000601
[33818.475614] PCI Device: 0000:00:1f.2 Vendor=8086 Device=1e02 Class=000106
[33818.475616] PCI Device: 0000:00:1f.3 Vendor=8086 Device=1e22 Class=000c05