本文共 858 字,大约阅读时间需要 2 分钟。
int acpi_scan_add_handler(struct acpi_scan_handler *handler)用于将一个acpi handler添加到acpi_scan_handlers_list 这个全局变量中其使用的例程如下:void __init acpi_pnp_init(void){ acpi_scan_add_handler(&acpi_pnp_handler);}可以看到这里将acpi_pnp_handler 添加到acpi_scan_handlers_list 的最后这里的acpi_pnp_handler定义如下:static struct acpi_scan_handler acpi_pnp_handler = { .ids = acpi_pnp_device_ids, .match = acpi_pnp_match, .attach = acpi_pnp_attach,};可以看到handler 基本是一个指针,明白这点后可以通过比较指针是否相等来判断是否是这个handlerbool acpi_is_pnp_device(struct acpi_device *adev){ return adev->handler == &acpi_pnp_handler || is_cmos_rtc_device(adev);}例如上例子中就是通过adev->handler == &acpi_pnp_handler来判断指针是否相等其源码分析如下:int acpi_scan_add_handler(struct acpi_scan_handler *handler){ if (!handler) return -EINVAL; list_add_tail(&handler->list_node, &acpi_scan_handlers_list); return 0;}可以看到基本就是讲这个handler添加到全局变量acpi_scan_handlers_list的最后
转载地址:http://pdnmi.baihongyu.com/