博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核ACPI函数API之acpi_bus_get_status
阅读量:4216 次
发布时间:2019-05-26

本文共 1649 字,大约阅读时间需要 5 分钟。

acpi_bus_get_status这个函数获取acpi_device对应handle的_STA的值,然后将这个值赋值给acpi_device其使用的例程如下:	if (acpi_bus_get_status(battery->device)) {		ACPI_EXCEPTION((AE_INFO, AE_ERROR, "Evaluating _STA"));		return -ENODEV;	}其源码分析如下:int acpi_bus_get_status(struct acpi_device *device){	acpi_status status;	unsigned long long sta;	#如果这个设备已经不再了,则设置这个acpi_device的状态为ACPI_STA_DEFAULT后退出	if (acpi_device_always_present(device)) {		acpi_set_device_status(device, ACPI_STA_DEFAULT);		return 0;	}	/* Battery devices must have their deps met before calling _STA */	#对电池设备特殊对待	if (acpi_device_is_battery(device) && device->dep_unmet) {		acpi_set_device_status(device, 0);		return 0;	}	#获得acpi_device对应handle的sta的状态	status = acpi_bus_get_status_handle(device->handle, &sta);	if (ACPI_FAILURE(status))		return -ENODEV;	#将sta的值赋值给acpi_device	acpi_set_device_status(device, sta);	if (device->status.functional && !device->status.present) {		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]: "		       "functional but not present;\n",			device->pnp.bus_id, (u32)sta));	}	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n",			  device->pnp.bus_id, (u32)sta));	return 0;}我们看看如果通过handle 拿到sta的状态,原来就是直接获取bios提供的_STA 这个整形值acpi_status acpi_bus_get_status_handle(acpi_handle handle,				       unsigned long long *sta){	acpi_status status;	status = acpi_evaluate_integer(handle, "_STA", NULL, sta);	if (ACPI_SUCCESS(status))		return AE_OK;	if (status == AE_NOT_FOUND) {		*sta = ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED |		       ACPI_STA_DEVICE_UI      | ACPI_STA_DEVICE_FUNCTIONING;		return AE_OK;	}	return status;}所以从这里知道acpi_device 对应的status是和其hanlde的_STA 值是相等的。

转载地址:http://odnmi.baihongyu.com/

你可能感兴趣的文章
webView 返回按钮和关闭按钮
查看>>
iOS TableView给力动画的简单实现
查看>>
最详尽的 Swift 代码规范指南
查看>>
唐巧总结的40个国人iOS技术博客
查看>>
谈 UIView Animation 编程艺术
查看>>
谈谈ios传值方式(属性传值、代理传值、Block传值、单例传值、通知传值、KVC传值)
查看>>
ios 数组最大值,最小值,平均值,和的快速算法
查看>>
ios 让UITextField(输入框)直接进入编辑状态
查看>>
如何优雅的谈论Objective-C
查看>>
ios 自定义返回按钮侧滑失效完美解决方案
查看>>
深入理解Objective-C Runtime
查看>>
深入理解RunLoop
查看>>
ios 应用内跳转微信
查看>>
iOS上如何让按钮文本左对齐问题
查看>>
Xcode8 兼容iOS 10 整理笔记
查看>>
iOS 枚举的巧用
查看>>
让你的 Xcode8 继续使用插件
查看>>
iOS去除导航栏和tabbar的1px横线
查看>>
iOS GitHub上常用第三方框架
查看>>
ios 隐藏cell分割线和自定义cell分割线颜色
查看>>