linux电源管理的uevent上报

本文深入探讨了Linux内核如何通过uevent机制报告电源管理相关事件,重点关注了`/include/linux/power_supply.h`、`/drivers/power/power_supply.h`、`/drivers/power/power_supply_sysfs.c`和`/drivers/power/power_supply_core.c`四个关键文件。通过这些文件,了解了电源属性、uevent接口函数以及设备注册与注销的过程,为监控和管理设备电源状态提供了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     作为一名嵌入式软件程序猿,很多时候我们都需要知道linux或android等设备的电源使用相关的情况。如是否有充电器连接、是否在充电、是否充满等状态,linux kernel可以通过uevent机制进行上报事件。

     源码目录下相关文档:

  /include/linux/power_supply.h  // 公用的一些数据结构等的定义,包括电源的各项属性、状态及读写这些属性的一些接口函数等以及提供给具体设备模块的注册、注销等的函数接口。 

 /drivers/power/power_supply_sysfs.c //实现电源uevent的主要文件

  /drivers/power/power_supply_core.c //电源模块核心部分,实现了具体设备统一的注册、注销等电源相关的函数接口,通过/include/linux/power_supply.h文件提供对外接口的声明。

   /drivers/power/Makefile          //查看该文件可知,uevent的实现主要依赖CONFIG_SYSFS和CONFIG_POWER_SUPPLY这两项的配置

   /drivers/power/Kconfig          //该文件可相关的配置和依赖关系

   /drivers/power/power_supply.h // 声明一些power_supply_sysfs.c文件和power_supply_leds.c的对外接口,这些接口在文件/drivers/power/power_supply_core.c中使用。

   /drivers/power/power_supply_leds.c  //电源LED相关,不分析

  在 /drivers/power/目录下还有很多其它的一些具体设备的底层实现,本文不分析。

本文主要分析四个文件:/include/linux/power_supply.h , /drivers/power/power_supply.h , /drivers/power/power_supply_sysfs.c,/drivers/power/power_supply_core.c。

1.   /include/linux/power_supply.h 文件

     struct power_supply {...}结构体:

      该结构体中定义了一些重要的电源相关的操作函数接口,如get_property和set_property函数指针可以分别获取和设置电源相关的一些属性。 

    enum power_supply_property {...}枚举结构,其定义如下:

    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_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_CURRENT_MAX,
 POWER_SUPPLY_PROP_CURRENT_NOW,
 POWER_SUPPLY_PROP_CURRENT_AVG,
 POWER_SUPPLY_PROP_POWER_NOW,
 POWER_SUPPLY_PROP_POWER_AVG,
 POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
 POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
 POWER_SUPPLY_PROP_CHARGE_FULL,
 POWER_SUPPLY_PROP_CHARGE_EMPTY,
 POWER_SUPPLY_PROP_CHARGE_NOW,
 POWER_SUPPLY_PROP_CHARGE_AVG,
 POWER_SUPPLY_PROP_CHARGE_COUNTER,
 POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT,
 POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX,
 POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE,
 POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
 POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT,
 POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX,
 POWER_SUPPLY_PROP_ENERGY_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值