Я пытаюсь получить уровень заряда батареи внутри модуля ядра 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
- Я также заметил, что внутри драйверов /acpi/sbs.c есть метод
acpi_battery_read
, и прямо над ним есть комментарий, говорящий "Интерфейс драйвера". Это может быть другим способом, если кто-то знает, как использовать это.
Я предполагаю, что, вероятно, плохая идея читать файлы во внутреннем модуле ядра, но я не совсем уверен, как эти файлы сопоставляются с функциями ядра, так что это может быть хорошо.
Итак, можете ли вы, ребята, дать мне несколько советов/рекомендаций?
Изменить: я включил свое решение в ответ ниже.