Linux 内核如何处理对 /sys/power/state 的写入
我想找到处理 /sys/power/state 写入的 Linux 内核(x86、2.6.18 或类似)的源文件。我用谷歌搜索并尝试在源代码中搜索 sysfs_create_file
(和目录)。但到目前为止我没有发现任何有用的东西。有人知道吗?谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要找出对内核的调用最终在哪里,Ftrace 可能是一个方便的工具。
对于您的特定情况,我使用以下命令来获取函数图,以便从
/sys/power/state
读取(我认为读取函数与您编写的函数不会相差太远)正在寻找):(您需要 root 才能执行此操作)
这会将跟踪转储到名为
trace.dat
的二进制文件。要读取此文件,请执行以下操作(再次以 root 身份):然后我使用
grep
过滤“power”或“state”等内容的输出,最终能够找到以下内容(仅显示相关部分):因此读取
/sys/power/state
最终会出现state_show
。在该函数下方,您可以找到state_store
我猜这就是写入的最终结果。To find out where a call into the kernel ends up, Ftrace can be a handy tool.
For your particular case, I used the following command to get a function graph for a read from
/sys/power/state
(I figured the reading function wouldn't be too far away from writing function that you are looking for):(You need to be root to execute this)
This dumps the trace to a binary file called
trace.dat
. To read this file, do the following (again as root):Then I used
grep
to filter the output on things like "power" or "state" and eventually was able to find the following (only showing relevant parts):So reading
/sys/power/state
ends up instate_show
. Below that function, you can findstate_store
which is where I guess writes will end up.