内核ACPI函数API之acpi_scan_add_handler

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 基本是一个指针,明白这点后可以通过比较指针是否相等来判断是否是这个handler
bool 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的最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值