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