Linuxカーネルモジュール内のバッテリーレベルを取得しようとしています(モジュールはmodprobeを介して挿入されます)。理想的には、カーネルAPI呼び出しを使用してバッテリー情報を取得したいと思います。私はWebで解決策を検索しました。また、LinuxカーネルソースとMichaelMeskesによるプログラム「acpi」のソースを調べてアイデアを探しました。
これらは私が使用できると思うテクニックのいくつかです:
- 読み取り、解析
/proc/acpi/battery/BAT0/state
、および/proc/acpi/battery/BAT0/info
/sys/class/power_supply/BAT0/charge_now
解析をcharge_full
伴わずに読み取ります。- インターフェイスを公開する方法がわかれば、Linuxカーネルソースdrivers / acpi/battery.cからの呼び出しを使用してみることができます。私はおそらくメソッド
acpi_battery_get_status
とacpi_battery_get_info
- また、drivers / acpi / sbs.c内にメソッドが
acpi_battery_read
あり、そのすぐ上に「ドライバーインターフェイス」というコメントがあることに気付きました。誰かがこれを使用する方法を知っているなら、これは別の方法かもしれません。
カーネルモジュール内でファイルを読み取ることはおそらく悪い考えだと思いますが、それらのファイルがカーネル関数呼び出しにどのようにマッピングされるかは正確にはわからないため、問題ない可能性があります。
それで、皆さんは私にいくつかの提案/推奨事項を教えてもらえますか?
編集:私は私の解決策を以下の答えに含めました。