我正在尝试获取 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
- 我还注意到在驱动程序/acpi/sbs.c 中有一个方法
acpi_battery_read
,在它的正上方有一条评论说“驱动程序接口”。如果有人知道如何使用它,这可能是另一种方式。
我认为在内核模块中读取文件可能是一个坏主意,但我不确定这些文件如何映射到内核函数调用,所以它可能没问题。
那么,你们能给我一些建议/建议吗?
编辑:我在下面的答案中包含了我的解决方案。