acpi_pci_find_root 函數根據形參的handle傳回對應的pci root bridge
其源碼分析如下:
struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle)
{
struct acpi_pci_root *root;
struct acpi_device *device;
#首先根據handle找到device,并通過acpi_match_device_ids 判斷這個device是否是root bridge
if (acpi_bus_get_device(handle, &device) ||
acpi_match_device_ids(device, root_device_ids))
return NULL;
#如果是root bridge的話,則傳回這個device對應的acpi_pci_root
root = acpi_driver_data(device);
return root;
}
static inline void *acpi_driver_data(struct acpi_device *d)
{
return d->driver_data;
}
可見acpi_pci_root 是儲存在acpi_device的driver_data中