Я пытаюсь получить уровень заряда батареи внутри модуля ядра Linux (модуль вставляется через modprobe).В идеале я хотел бы использовать вызов API ядра для получения информации об аккумуляторе.Я искал в Интернете решения, а также исследовал источник ядра Linux и программу «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
, а прямо над ним есть комментарий «Интерфейс драйвера»,Это может быть другой способ, если кто-то знает, как это использовать.
Я предполагаю, что, вероятно, плохая идея читать файлы в модуле ядра, но я не совсем уверен, как эти файлы отображаютсяк вызовам функций ядра, так что все может быть в порядке.
Итак, вы, ребята, можете дать мне несколько советов / рекомендаций?
Редактировать: я включил свое решение в ответ ниже.