Linux-5.15.68中pci_bus_write_config_dword函数定义位置咨询
在Linux 5.15.68中查找
pci_bus_write_config_dword的定义 你用grep找不到直接定义的核心原因是:pci_bus_write_config_dword是一个封装函数指针调用的内联函数,它本身没有固定的单一实现,真正的硬件写入逻辑由具体的PCIe根控制器(RC)驱动提供。
关键细节:
- 函数的原型和内联封装代码在
include/linux/pci.h中,核心逻辑是调用PCI总线结构体struct pci_bus操作集里的bus->ops->write_config_dword指针。 - 真正的硬件适配实现由各平台的PCIe控制器驱动提供,这些驱动会在初始化阶段,将自身的配置写入函数赋值给
pci_bus的操作集成员。
定位具体实现的方法:
在源码树中执行以下命令,找出所有给write_config_dword赋值的驱动代码:
grep -r "write_config_dword" --include="*.c" ./
常见实现位置示例:
- x86平台:
- 内存映射配置空间的实现:
arch/x86/pci/mmconfig.c中的pci_mmcfg_write_dword - IO端口配置空间的实现:
arch/x86/pci/i386.c中的pci_conf1_write_dword
- 内存映射配置空间的实现:
- ARM/ARM64平台:
- 不同厂商的PCIe控制器驱动中,比如Rockchip的驱动在
drivers/pci/controller/dwc/pcie-rockchip.c,Freescale的驱动在drivers/pci/controller/fsl/pci-fsl.c,这些驱动会定义专属的配置写入函数,并赋值给struct pci_ops的write_config_dword成员。
- 不同厂商的PCIe控制器驱动中,比如Rockchip的驱动在
内容的提问来源于stack exchange,提问作者Chan Kim
相关产品推荐
相关产品推荐

