Перехват приостановки/возобновления в Linux из пользовательского пространства

Можно ли поймать сигнал от ядра Linux, когда какой-либо пользователь приостанавливает работу с аппаратным обеспечением, а не с каким-либо другим приложением?

Это означает, что поймать сигнал, когда пользователь нажимает кнопку приостановки (или закрывает крышку).

Я видел, что APM, например, должен был реализовать программное обеспечение ядра и пользовательского пространства, чтобы справиться с этим. Кажется, ядро ​​​​не обрабатывает это по умолчанию.


person Felipe Tonello    schedule 24.09.2012    source источник
comment
Вы используете ACPI? Обычно где-то где-то в таком месте, как /etc/acpi/actions, есть куча перехватчиков ACPI, которые вы можете изменить или добавить код.   -  person Jon Lin    schedule 24.09.2012
comment
@JonLin Нет, я не использую никакого демона acpi.   -  person Felipe Tonello    schedule 25.09.2012


Ответы (1)


Если ваш дистрибутив использует pm-utils, вы можете добавить скрипт в /usr/lib/pm-utils/sleep.d, который вызывается при приостановке/возобновлении (или гибернации/оттаивании). Что вы пытаетесь достичь?

person Andy Ross    schedule 24.09.2012
comment
Как я вижу, pm-utils работают только в том случае, если вы используете их для приостановки, они не слушают ядро ​​​​в поисках какого-либо сигнала приостановки. Я прав? Я пытаюсь выключить/включить Wi-Fi при приостановке/возобновлении. - person Felipe Tonello; 25.09.2012
comment
Я все еще в замешательстве. Драйвер для вашего Wi-Fi-устройства не поддерживает приостановку/возобновление работы (наверняка все они сейчас поддерживают)? Вы задаете вопрос о разработке ядра? Какую именно проблему пытается решить это решение? - person Andy Ross; 25.09.2012
comment
По сути, когда мы приостанавливаем работу нашего устройства с включенным Wi-Fi, оно больше не возобновляет работу. Если я отключу ifconfig wlan0, а затем приостановлю/возобновлю работу. - person Felipe Tonello; 25.09.2012
comment
@AndyRoss Помимо pm-utils, есть ли способ, которым пользовательский процесс может узнать о событиях пробуждения из ядра Linux? - person mk..; 08.10.2014
comment
@mk.. Вам нужен какой-то другой механизм от ядра. ACPI или аналогичный. В противном случае нет никакого способа узнать это из пользовательского пространства. - person Felipe Tonello; 12.11.2015