acpi_bus_get_device 这个函数可以通过acpi_handle得到一个acpi_device
其用法如下:
if (acpi_bus_get_device(ACPI_HANDLE(&pdev->dev), &adev))
return 0;
其源码分析如下:
int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device)
{
#这个函数除了可以得到acpi_device外还可以得到callback
return acpi_get_device_data(handle, device, NULL);
}
static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
void (*callback)(void *))
{
acpi_status status;
#如果保存device的指针为null,则查询页就没有啥意思,可以直接退出
if (!device)
return -EINVAL;
#通过这个函数得到acpi_device和callback
status = acpi_get_data_full(handle, acpi_scan_drop_device,
(void **)device, callback);
#返回失败或者device 为null的话,则报错。
if (ACPI_FAILURE(status) || !*device) {
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
handle));
return -ENODEV;
}
return 0;
}
内核ACPI函数API之acpi_bus_get_device
最新推荐文章于 2021-05-01 15:50:06 发布