linux内核如何处理写入/ sys/power/state

Jia*_*ang 0 linux kernel acpi sysfs

我想找出处理写入/ sys/power/state的Linux内核(x86,2.6.18或类似)的源文件.我用Google搜索并尝试sysfs_create_file在源代码中搜索(和dir).但到目前为止我没有找到任何有用的东西.谁知道呢?谢谢!

Job*_*Job 5

为了找出调用内核的位置,Ftrace可以成为一个方便的工具.

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

trace-cmd record -p function_graph -F cat /sys/power/state
Run Code Online (Sandbox Code Playgroud)

(你需要root才能执行这个)

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

trace-cmd report
Run Code Online (Sandbox Code Playgroud)

然后我习惯grep过滤"power"或"state"之类的输出,最终能够找到以下内容(仅显示相关部分):

sysfs_read_file() {
  ...
  state_show() {
    valid_state() {
      acpi_suspend_state_valid();
    }
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

所以阅读/sys/power/state结束了state_show.在该函数下面,您可以找到state_store我认为最终会写入的位置.