Как ядро ​​Linux обрабатывает запись в / sys / power / state - PullRequest
0 голосов
/ 14 апреля 2011

Я хочу узнать исходный файл ядра Linux (x86, 2.6.18 или аналогичный), который обрабатывает запись в / sys / power / состояние.Я гуглил и пытаюсь найти sysfs_create_file (и dir) в исходном коде.Но я пока не нашел ничего полезного.Кто-нибудь знает это?Спасибо!

1 Ответ

5 голосов
/ 14 апреля 2011

Чтобы выяснить, где заканчивается вызов в ядро, 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, где, я думаю, запись закончится.

...