如何获取Linux内核模块中的电池电量? |


本站和网页 https://qa.1r1g.com/sf/ask/340106021/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

如何获取Linux内核模块中的电池电量? |
那些遇到过的问题
Linux
C++
Python
Vue.js
Nginx
SQL
NoSQL
kubernetes
如何获取Linux内核模块中的电池电量?
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不涉及解析.
如果我能弄清楚如何公开接口,我可以尝试使用来自Linux内核源驱动程序/ acpi/battery.c的调用.我可能需要这些方法acpi_battery_get_status和acpi_battery_get_info
我也注意到在drivers/acpi/sbs.c里面有一个方法acpi_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);
归档时间:
11 年,10 月 前
查看次数:
7940 次
最近记录:
9 年 前
相关归档
如何从用户空间访问内核空间? 20
从免费命令中理解"缓冲区"和"缓存" 20
是否可以用gcc以外的东西编译Linux内核 19
从汇编调用交流功能需要"asmlinkage"吗? 17
用于企业Linux内核开发的Git工作流程 15
Docker容器中的内存限制和CPU限制 10
在嵌入式设备上运行Linux内核所需的最小RAM量是多少? 9
如何在Linux计算机上禁用avx指令? 8
在启动时为多个文件启用动态调试 8
内核空间中 PCI 内存的地址映射 5
难疑归档
var functionName = function(){} vs function functionName(){} 6645
为什么我不应该在PHP中使用mysql_*函数? 2432
PHP:从数组中删除元素 2362
jQuery滚动到元素 2196
根据pandas中列的值从DataFrame中选择行 1649
我应该在哪里将<script>标记放在HTML标记中? 1392
使用react路由器以编程方式导航 1251
将项目导入Eclipse后,"必须覆盖超类方法"错误 1223
如何从Git存储库中删除.DS_Store文件? 1167
使用PHP"注意:未定义的变量","注意:未定义的索引"和"通知:未定义的偏移量" 1119
Copyright Info
© Copyright 2013-2021 admin@qa.1r1g.com
如未特别说明,本网站的内容使用如下协议:Creative Commons
Atution-NonCommercial-ShareAlike 4.0 International license.
用以下方式浏览
大分类
日期
标签
参考资料
qa.1r1g.com
www website
superuser
askubuntu
serverfault
dba
回到顶部
网安备44200002443738
粤ICP备19038133号