[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: acpi/events/lidbtn отрабатывает дважды -- как побороть?



On Mon, 30.03.2009 18:13:00 , Alexander GQ Gerasiov wrote:
> Mon, 30 Mar 2009 14:20:55 +0300
> Тихон Тарнавский <tikhon@lexpr.ru> wrote:
> 
> > Создал скрипт из одной строчки (echo mem >/sys/power/state), прописал
> > его в /etc/acpi/events/lidbtn. При закрытии крышки скрипт отрабатывает
> > дважды, т.е. вот с этой командой ноут засыпает, а после включения
> > засыпает ещё рах -- включается лишь со второго раза. Это точно именно
> > этот скрипт запускается два раза: проверял, заменив строку на
> > echo 1>>/home/t/tmp/tmp. И запускается точно оба раза из одного и того
> > же места: больше нигде в /etc/acpi/ он не упоминается, и если из
> > lidbtn убрать, засыпания не происходит.
> > 
> > Прошу помочь разобраться, где корень проблемы; или хотя бы подсказать,
> > как проще её обойти. Спасибо.
> Для начала проверить, что генерится одно событие при помощи
> acpi_listen, Затем проверить в логах acpid что он пишет.
В лог я уже смотрел -- он пустой. События генетирся таки два. Но я был
уверен, что это оттого, что lidbtn ведь отвечает _и_ за закрытие, _и_
за открытие крышки; т.е. нажал-отпустил кнопку -- вот и есть два
события. А в случае с засыпанием второе событие по идее создаваться не
должно, т.к. в момент открытия крышки ноут спит. Проверил: написал в
тестовом варианте date вместо echo 1 -- таки да, вывод происходит в
момент нажания кнопки и в момент отпускания. А в варианте с засыпанием
хотя второе событие создаваться не должно, но оно всё же создаётся;
проверил так: нажал кнопку пальцем и включил не отпуская -- всё
отработало как надо, а когда отпустил -- тогда уже выключилось ещё
раз. Видимо, в момент просыпания сверяется состояние кнопки -- и, если
оно изменилось, всё же создаётся ещё одно событие. Получается, надо
либо всё же читать /proc/acpi/button/lid/*/state, либо, как написал
Иван, обходить путём контроля чётности. И действительно, оба варианта
работают. Понятно, что первый -- более правильный. Его и оставил.
Спасибо за наводку.

-- 
С уважением,
Тихон Тарнавский.
http://linuxforum.ru
http://posix.ru


Reply to: