Linux kernel 什么是PCI_插槽宏?
我不明白这是什么意思。 它是来自dbdf(域:总线:设备:功能)的设备号 此处的代码::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主机
/*
*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)