解决android系统唤醒时间偏长------healthd里的一些调用

原创 2016年05月31日 18:12:31

目前定位到healthd的调用过程耗时太长,于是去看看power相关的一些东西

healthd里一共调用了如下的节点获取数据

openat(AT_FDCWD, "/sys/class/power_supply/battery/present", 1    *******
openat(AT_FDCWD, "/sys/class/power_supply/battery/capacity",100     *****
openat(AT_FDCWD, "/sys/class/power_supply/battery/voltage_now", 4389402     ********
openat(AT_FDCWD, "/sys/class/power_supply/battery/temp", 291   ********
openat(AT_FDCWD, "/sys/class/power_supply/battery/status", Full 

到kernel里找节点

Power_supply_sysfs.c里

static struct device_attribute power_supply_attrs[] = {
/* Properties of type `int' */
POWER_SUPPLY_ATTR(status),
看看#define POWER_SUPPLY_ATTR(_name) \
{ \
.attr = { .name = #_name }, \
.show = power_supply_show_property, \
.store = power_supply_store_property, \
}

然后看static ssize_t power_supply_show_property(struct device *dev,
 struct device_attribute *attr,
 char *buf) 

这个里面调用了

if (off == POWER_SUPPLY_PROP_TYPE)
value.intval = psy->type;
else
ret = psy->get_property(psy, off, &value);

这个get_property需要在qpnp-vm-bms.c

static int qpnp_vm_bms_power_get_property(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)

{
switch (psp) {
case POWER_SUPPLY_PROP_CHARGE_NOW:
val->intval = get_remaining_usable_capacity(chip);
break;

}

这些的case都在power_supply.h

enum power_supply_property {
/* Properties of type `int' */
POWER_SUPPLY_PROP_STATUS = 0,
POWER_SUPPLY_PROP_CHARGE_TYPE,
POWER_SUPPLY_PROP_HEALTH,
POWER_SUPPLY_PROP_PRESENT,
POWER_SUPPLY_PROP_ONLINE,
POWER_SUPPLY_PROP_AUTHENTIC,
POWER_SUPPLY_PROP_CHARGING_ENABLED,
POWER_SUPPLY_PROP_TECHNOLOGY,
POWER_SUPPLY_PROP_CYCLE_COUNT,
POWER_SUPPLY_PROP_VOLTAGE_MAX,
POWER_SUPPLY_PROP_VOLTAGE_MIN,
POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
POWER_SUPPLY_PROP_VOLTAGE_NOW,
POWER_SUPPLY_PROP_VOLTAGE_AVG,
POWER_SUPPLY_PROP_VOLTAGE_OCV,
POWER_SUPPLY_PROP_INPUT_VOLTAGE_REGULATION,
POWER_SUPPLY_PROP_CURRENT_MAX,
POWER_SUPPLY_PROP_INPUT_CURRENT_MAX,
POWER_SUPPLY_PROP_INPUT_CURRENT_TRIM,
POWER_SUPPLY_PROP_INPUT_CURRENT_SETTLED,
POWER_SUPPLY_PROP_VCHG_LOOP_DBC_BYPASS,
POWER_SUPPLY_PROP_CURRENT_NOW,
POWER_SUPPLY_PROP_CURRENT_AVG,
POWER_SUPPLY_PROP_POWER_NOW,
POWER_SUPPLY_PROP_POWER_AVG,

如果找其中的一个比如POWER_SUPPLY_PROP_ONLINE

在kernel里搜索后只有在这几个文件里Qpnp-linear-charger.c  或者Smb358-charger.c 或者qpnp-vm-bms.c里找对应的

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

解决android系统唤醒时间偏长------healthd里的epoll以及socket

在healthd中,有一个很好的例子,特地截取下来作为参考: 首先是 static int uevent_fd; static int eventct; static int epollf...

Android 6.0 Healthd

healthd主要是读取电池节点的信息,传给BatteryService。或者在关机充电等使用。注意healthd中使用的是kernel的log,存在路径:system\core\healthd ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Android电源管理-Healthd

OS:Android 4.4.2 Android电源管理底层用的是Linux power supply框架。驱动部分不叙述。只看JAVA、JNI和CPP应用层。 从Android 4.4开...

(原创)android6.0系统Healthd深入分析

概述 Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryService用以计算电池电量相关状态信...

解决android系统唤醒时间偏长------healthd里的一些调用

目前定位到healthd的调用过程耗时太长,于是去看看power相关的一些东西 healthd里一共调用了如下的节点获取数据 openat(AT_FDCWD, "/sys/class/power_...

解决android系统唤醒时间偏长------看log找可疑的地方

最近发现我们的手机的双击唤醒时间偏长,那么就需要去看是什么导致的。于是首先看唤醒的log [  252.830937] [ASDF] enter do_write_event_worker    ...

Bug系列-------皮套模式系统唤醒时间过长

最近遇到一个问题,在使用皮套的时候发现系统唤醒的速度偏慢,于是看log发现是iic和tp的ic通讯的时候出错了,于是需要追一下tp的resume和suspend以及各个mode 首先调用suspe...

[C++]--调用系统时间

今天突然想写一个时钟,当然理想是很美好的,希望做成数字和模拟的两种类型,于是想到了调用系统时钟的是想方法,于是有了此文 C++ #include #include int main...

android WakeLock 唤醒

一些手机app(如微信、QQ等)有新消息来到达,手机屏幕即使在锁屏状态下也会亮起,并提示用户有新消息。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入...

Android唤醒锁

摘要 如果 Android* 应用使用唤醒锁不当,将会显著增加电池耗电量。 在本文中,我们将介绍一些提示和技巧,帮助您了解如何确认与误用唤醒锁有关的 No S...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)