Estoy tratando de obtener el nivel de la batería dentro de un módulo kernel de Linux (el módulo se inserta a través de modprobe). Idealmente, me gustaría usar una llamada API de kernel para obtener la información de la batería. He buscado soluciones en la web y también he explorado la fuente Linux Kernel y la fuente del programa "acpi" de Michael Meskes para obtener ideas.¿Cómo puedo obtener el nivel de batería dentro de un módulo kernel de Linux?
Estas son algunas de las técnicas que creo que puedo usar:
- leer y analizar
/proc/acpi/battery/BAT0/state
y/proc/acpi/battery/BAT0/info
- Leer de
/sys/class/power_supply/BAT0/charge_now
ycharge_full
sin análisis en cuestión. - Podría intentar usar las llamadas de los controladores fuente de kernel de Linux/acpi/battery.c si pudiera descubrir cómo exponer la interfaz. Probablemente necesitaría los métodos
acpi_battery_get_status
yacpi_battery_get_info
- También noté que dentro de los drivers/acpi/sbs.c hay un método
acpi_battery_read
y justo encima hay un comentario que dice "Driver Interface". Esta podría ser otra forma si alguien sabe cómo usar esto.
Supongo que probablemente sea una mala idea leer archivos mientras estoy dentro de un módulo kernel, pero no estoy muy seguro de cómo esos archivos se asignan a las llamadas a función kernel, por lo que podría estar bien.
¿Pueden darme algunas sugerencias/recomendaciones?
Editar: He incluido mi solución en una respuesta a continuación.
¿Por qué quieres hacer esto, exactamente? –
@Andy Hay alguna funcionalidad dependiente del nivel de batería. – razvanlupusoru