Power Supply驱动框架和具体驱动
Power Supply驱动程序用于让用户空间可以读取系统中的供电设备信息。供电设备可以是直流电源(AC)、USB或者电池等。
17.5.1 Power Supply驱动框架
Power Supply驱动程序与用户空间的接口是sys文件系统,该类型驱动程序的目录为/sys/class/power_supply/,其中的每个子目录表示一种供电设备的名称。
Power Supply驱动头文件为:include/linux/power_supply.h;Power Supply驱动框架的代码为:drivers/power/power_supply_core.c和drivers/power/power_supply_sysfs.c。
power_supply.h文件中Power Supply的注册和注销函数如下所示:
int power_supply_register(struct device *parent,struct power_supply *psy);
void power_supply_unregister(struct power_supply *psy);
其中,power_supply结构体为驱动程序需要实现的部分,其内容如下所示:
struct power_supply {
const char *name; // 设备名称
enum power_supply_type type; // 类型
enum power_supply_property *properties; // 属性指针
size_t num_properties; // 属性的数目
char **supplied_to;
size_t num_supplicants;
int (*get_property)(struct power_supply *psy, // 获得属性
enum power_supply_property psp, union power_supply_propval *val);
void (*external_power_changed)(struct power_supply *psy);
// ...... 省略部分内容
};
一个Power Supply驱动要实现get_property和external_power_changed这两个函数,而其名称对应于/sys/class/power_supply/目录中所建立的子目录。power_supply_property则是一系列用枚举值表示的属性,也就是每个供电设备子目录当中的文件名。supplied_to表示为哪个设备进行供电,通常指某个电池。