Linux 内核如何处理对 /sys/power/state 的写入

发布于 2024-11-01 04:32:10 字数 146 浏览 4 评论 0 原文

我想找到处理 /sys/power/state 写入的 Linux 内核(x86、2.6.18 或类似)的源文件。我用谷歌搜索并尝试在源代码中搜索 sysfs_create_file (和目录)。但到目前为止我没有发现任何有用的东西。有人知道吗?谢谢!

I want to find out the source file of the Linux kernel (x86, 2.6.18 or similar) that handle the write to /sys/power/state. I googled and try to search sysfs_create_file (and dir) in the source code. But I didn't find anything useful so far. Anyone knows that? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┈┾☆殇 2024-11-08 04:32:10

要找出对内核的调用最终在哪里,Ftrace 可能是一个方便的工具。

对于您的特定情况,我使用以下命令来获取函数图,以便从 /sys/power/state 读取(我认为读取函数与您编写的函数不会相差太远)正在寻找):(

trace-cmd record -p function_graph -F cat /sys/power/state

您需要 root 才能执行此操作)

这会将跟踪转储到名为 trace.dat 的二进制文件。要读取此文件,请执行以下操作(再次以 root 身份):

trace-cmd report

然后我使用 grep 过滤“power”或“state”等内容的输出,最终能够找到以下内容(仅显示相关部分):

sysfs_read_file() {
  ...
  state_show() {
    valid_state() {
      acpi_suspend_state_valid();
    }
  }
  ...
}

因此读取 /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):

trace-cmd record -p function_graph -F cat /sys/power/state

(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):

trace-cmd report

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):

sysfs_read_file() {
  ...
  state_show() {
    valid_state() {
      acpi_suspend_state_valid();
    }
  }
  ...
}

So reading /sys/power/state ends up in state_show. Below that function, you can find state_store which is where I guess writes will end up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文