raz*_*oru 14 kernel-module acpi linux-kernel
我试图在Linux内核模块中获取电池电量(模块通过modprobe插入).理想情况下,我希望使用内核API调用来获取电池信息.我在网上搜索了解决方案,我还探索了Linux内核源代码和Michael Meskes的程序源代码"acpi"的想法.
这些是我认为我可以使用的一些技术:
/proc/acpi/battery/BAT0/state和/proc/acpi/battery/BAT0/info/sys/class/power_supply/BAT0/charge_now并且charge_full不涉及解析.acpi_battery_get_status和acpi_battery_get_infoacpi_battery_read,就在它上面有一个评论说"Driver Interface".如果有人知道如何使用它,这可能是另一种方式.我认为在内核模块中读取文件可能是一个坏主意,但我不确定这些文件如何映射到内核函数调用,所以它可能没问题.
那么,你们能给我一些建议/建议吗?
编辑:我在下面的答案中包含了我的解决方案.
raz*_*oru 11
我找到了一个适合我的解决方案.首先确保#include <linux/power_supply.h>
假设您知道电池的名称,此代码给出了如何获得当前电池容量的示例.
char name[]= "BAT0";
int result = 0;
struct power_supply *psy = power_supply_get_by_name(name);
union power_supply_propval chargenow, chargefull;
result = psy->get_property(psy,POWER_SUPPLY_PROP_CHARGE_NOW,&chargenow);
if(!result) {
printk(KERN_INFO "The charge level is %d\n",chargenow.intval);
}
result = psy->get_property(psy,POWER_SUPPLY_PROP_CHARGE_FULL,&chargefull);
if(!result) {
printk(KERN_INFO "The charge level is %d\n",chargefull.intval);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7940 次 |
| 最近记录: |