Linux kernel 什么是PCI_插槽宏?

Linux kernel 什么是PCI_插槽宏?,linux-kernel,linux-device-driver,pci,Linux Kernel,Linux Device Driver,Pci,我不明白这是什么意思。 它是来自dbdf(域:总线:设备:功能)的设备号 此处的代码:: /* *PCI接口将多功能设备视为独立设备 *设备。对每个设备的插槽/功能地址进行编码 *在单个字节中,如下所示: * *7:3=插槽 *2:0=功能 */ #定义PCI_DEVFN(插槽,func)(((插槽)和0x1f)>3)和0x1f) #定义PCI_FUNC(devfn)((devfn)和0x07) 这是BDF中D的一个术语,代表总线:Device.Function。基本上,当它用作外部PCI主机

我不明白这是什么意思。 它是来自dbdf(域:总线:设备:功能)的设备号

此处的代码::

/*
*PCI接口将多功能设备视为独立设备
*设备。对每个设备的插槽/功能地址进行编码
*在单个字节中,如下所示:
*
*7:3=插槽
*2:0=功能
*/
#定义PCI_DEVFN(插槽,func)(((插槽)和0x1f)>3)和0x1f)
#定义PCI_FUNC(devfn)((devfn)和0x07)

这是BDF中D的一个术语,代表总线:Device.Function。基本上,当它用作外部PCI主机网桥时,设备通过物理插槽(硬件连接器)连接。在Linux中,这个术语用于避免与称为pci_dev的内部数据结构混淆,在代码开发人员中,它将
struct pci_dev
对象的实例称为pci设备
/*
 * The PCI interface treats multi-function devices as independent
 * devices.  The slot/function address of each device is encoded
 * in a single byte as follows:
 *
 *  7:3 = slot
 *  2:0 = function
 */
#define PCI_DEVFN(slot, func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
#define PCI_SLOT(devfn)     (((devfn) >> 3) & 0x1f)
#define PCI_FUNC(devfn)     ((devfn) & 0x07)