0

/ sys / power / stateへの書き込みを処理するLinuxカーネル(x86、2.6.18など)のソースファイルを見つけたいです。私はグーグルでソースコードを検索sysfs_create_file(およびdir)しようとしました。しかし、これまでのところ有用なものは何も見つかりませんでした。誰もがそれを知っていますか?ありがとう!

4

1 に答える 1

5

カーネルへの呼び出しがどこで終了するかを見つけるために、Ftraceは便利なツールになります。

あなたの特定のケースでは、次のコマンドを使用して、読み取り元の関数グラフを取得し/sys/power/stateました(読み取り関数は、探している書き込み関数からそれほど遠くないだろうと思いました)。

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

(これを実行するにはrootである必要があります)

これにより、トレースが。というバイナリファイルにダンプされますtrace.dat。このファイルを読み取るには、次の手順を実行します(これもrootとして)。

trace-cmd report

次にgrep、「電源」や「状態」などで出力をフィルタリングし、最終的に次のものを見つけることができました(関連する部分のみを表示)。

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

したがって、読み取り/sys/power/stateはで終わりますstate_showstate_storeその関数の下に、書き込みが終了すると私が推測する場所を見つけることができます。

于 2011-04-14T08:48:32.843 に答える