LINUX.ORG.RU

Замороженные (неправильные) статы в /sys/class/power_supply

 , ,


0

1

Привет!

Команда stat /sys/class/power_supply/BAT1/charge_now выдаёт одинаковые значения (интересует поле modify), не смотря на то, что содержимое файла постоянно меняется. sysfs примонтирована с параметрами rw,nosuid,nodev,noexec,relatime. Почему не обновляются статы? Как их принудить к обновлению?

★★

udevadm monitor не видит события, связанные с этим файлом. Неужели выход только один - читать по таймеру и сравнивать значения?

rmu ★★
() автор топика

Вывод

Оставлю для будущих поколений. Перечитал в свободное время кучу сообщений и статей о sysfs и пришёл к следующему заключению:

если в sysfs изменения псевдофайлов/директорий не отслеживаются inotify или poll монитором, то это надо принять как медицинский факт — эффективнее read file; sleep n; read again ничего не придумать.

Если пойти по пути отслеживания udev событиий, то там ситуация не стоит на месте и меняется от версии ядра к версии. Тем не менее, если udevadm monitor не показывает подходящих событий, то их ничем и не сгенерируешь. Выход только один — самому разбираться и переписывать код модулей ядра.

rmu ★★
() автор топика
Ответ на: Вывод от rmu

Потому, что значения генерируются только тогда, когда ты вызываешь read() на этом файле. Без потребности крутить циклы поллинга в ядре никто не будет, раз железо не поддерживает прерывания.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.