pci_get_device
时间: 2023-08-01 07:11:13 浏览: 109
`pci_get_device` 是 Linux 内核提供的一个函数,用于在设备树中查找指定的 PCI 设备,并返回指向该设备结构体的指针。其函数原型如下:
```
struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from);
```
该函数接受三个参数:
- `vendor`:要查找的设备的 Vendor ID,为 16 位十六进制数。
- `device`:要查找的设备的 Device ID,为 16 位十六进制数。
- `from`:从哪个设备开始查找,可以为 `NULL`,表示从设备树的开头开始查找。
该函数返回一个指向 `struct pci_dev` 结构体的指针,如果找到了指定的设备,则返回该设备的结构体指针;否则返回 `NULL`。
使用该函数需要先包含头文件 `linux/pci.h`。
例如,要查找 Vendor ID 为 0x10ec,Device ID 为 0x8168 的网络接口卡设备,可以使用如下代码:
```c
#include <linux/pci.h>
struct pci_dev *dev = pci_get_device(0x10ec, 0x8168, NULL);
if (dev) {
// 找到了指定设备
} else {
// 没有找到指定设备
}
```
需要注意的是,`pci_get_device` 函数只会查找已经被内核探测到并注册的设备。如果设备没有被正确探测或注册,该函数将无法找到该设备。