gpt4 book ai didi

linux-kernel - 负责/sys/class/power_supply/BAT0的内核模块是什么?

转载 作者:行者123 更新时间:2023-12-05 06:26:22 30 4
gpt4 key购买 nike

在使用 /sys/class/leds/ 摆弄 LED 之后,我现在正试图了解如何使用 linux kernel power supply attributes 控制计算机中的电池。 ,特别是 CHARGE_CONTROL_LIMIT。但是,/sys/class/power_supply/BAT0/ 中不存在这样的属性。

我是如何尝试回答这个问题的:

根据我阅读 man 5 sysfs 的理解,sysfs(通常安装为 sys)是用户空间和内核空间之间的接口(interface)。

假设:

  1. 存在一个内核模块,它创建和更新 /sys/class/power_supply/BAT0/

  2. 的内容
  3. 该内核模块可能,但似乎没有实现CHARGE_CONTROL_LIMIT。它确实实现了其他属性:

cat /sys/class/power_supply/BAT0/charge_full     
2884000
cat /sys/class/power_supply/BAT0/charge_now
2884000
cat /sys/class/power_supply/BAT0/cycle_count
0 <--- this seems broken
cat /sys/class/power_supply/BAT0/capacity
100

为了验证这个假设,我查找了相关内核模块的文档/来源。

挂断:试图找到负责 /sys/class/power_supply/BAT0/

的内核模块

ArchWikithis page演示如何在给定 modalias 的情况下查找内核模块。

cat /sys/class/power_supply/BAT0/device/modalias
acpi:PNP0C0A:

sudo grep -E 'PNP0C0A' /lib/modules/*/modules.alias
# nothing is found

我看到电池硬件是 acpi 类型,但是,在 modules.alias 中没有与其 modalias 完全匹配的类型。 (我尝试了几种通配符组合来找到它,但无济于事)。

@0andriy 建议检查 /drivers/platform/x86,我是这样做的:

find /lib/modules/5.0.0-15-generic/kernel -type f -name '*.ko' | xargs modinfo | grep -E 'alias.*PNP0C0A'
# Nothing

# Trying another query, to check that the query works:
find /lib/modules/5.0.0-15-generic/kernel/drivers -type f -name '*.ko' | xargs modinfo | grep -E 'alias.*TOS'
alias: acpi*:TOS1900:*
alias: acpi*:TOS6208:*
alias: acpi*:TOS6207:*
alias: acpi*:TOS6200:*

这是一台装有最新内核的惠普笔记本电脑

uname -a                                                                     
Linux lithium 5.0.0-15-generic #16-Ubuntu SMP Mon May 6 17:41:33 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

最佳答案

问题是电源可能来自已经静态链接到内核的模块(在 lsmod 中不可见或存在于/lib/modules 中),而不是作为独立模块保留。所以:

A) 首先检查/sys/module。这是一个包含动态链接(即 lsmod 可见)和静态链接条目的目录。检查您是否在此处看到(可能是小写的)pnp* 条目。

B) 如果你这样做了,而且它不在 lsmod 中,你将需要内核源代码。这些可以从 HP 获得,但您可以从库存资源 ( http://kernel.org ) 开始,因为它很可能在主线内核中。

C) 这些/sys 条目是通过调用“power_supply_register”的代码创建的。尝试对所有模块进行暴力 grep,以查看哪些匹配。您也可以在 Linux 源代码树上执行此操作(例如 find . -type f | xargs grep power_supply_register 或 grep -R 等)。

您是否可以扰乱充电限制等取决于相关模块。祝你好运。

关于linux-kernel - 负责/sys/class/power_supply/BAT0的内核模块是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56213083/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com