[gentoo / acpi] is er een event queue?

Pagina: 1
Acties:

  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
Volgende probleem doet zich voor: Als ik op m'n linuxbak de pwr-knop indruk, wordt netjes een door mij opgesteld script afgewerkt, en gaat de pc daarna hybernaten. Als ik hem later weer aanzet start hij netjes op, maar sluit zodra hij weer volledig terug is direct weer af. Dit proces herhaalt zich een aantal keer totdat hij na 3x ofzo aan blijft staan.

In de logs zie ik netjes verschijnen dat direct na het opstarten de power-button is ingedrukt. Dat is natuurlijk niet het geval. Ik vermoed dat m'n power butten nogal gevoelig is, en meerdere events genereert bij indrukken. Die wordt vervolgens netjes meegenomen de hybernate in, en wordt verder uitgevoerd zodra de pc uit hybernate komt :*) Heel grappig, alleen niet handig.

Dus heb ik in het afsluit script een delay ingebouwd in de hoop dat daarmee werd voorkomen dat verschillende events tegelijkertijd hybernate zouden aanroepen. Lost helaas niks op, de eventqueue wordt pas verder uitgevoerd als t ding weer is opgestart.

Vraag: waar vind ik die queue, en hoe maak ik m leeg?
Thx! :)

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Test eerst es of die queue er daadwerkelijk is door even een script aan je pwr-knop te hangen dat alleen een bericht naar je console stuurt.

He who knows only his own side of the case knows little of that.


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 22:33

Super_ik

haklust!

en als je knop inderdaad last heeft van contactdender kun je er een condensator op solderen

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

ik weet ff niet welk file tije het is maar je kan gewoon acpi even catten en kijken wat er gebeurt als je op je pwr knop drukt. natuurlijk zonder scriptje

>.< >.< >.< >.<


  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
RickN schreef op zaterdag 24 september 2005 @ 11:25:
Test eerst es of die queue er daadwerkelijk is door even een script aan je pwr-knop te hangen dat alleen een bericht naar je console stuurt.
Die is er:
[Sat Sep 24 10:48:34 2005] received event "button/power PWRF 00000080 00000009"
[Sat Sep 24 10:48:34 2005] executing action "/etc/acpi/default.sh button/power PWRF 00000080 00000009"
[Sat Sep 24 10:48:34 2005] BEGIN HANDLER MESSAGES
Going to hybernate in:
[Sat Sep 24 10:48:34 2005] END HANDLER MESSAGES
[Sat Sep 24 10:48:34 2005] action exited with status 0
[Sat Sep 24 10:48:34 2005] completed event "button/power PWRF 00000080 00000009"
[Sat Sep 24 10:48:34 2005] received event "button/power PWRF 00000080 0000000a"
[Sat Sep 24 10:48:34 2005] executing action "/etc/acpi/default.sh button/power PWRF 00000080 0000000a"
[Sat Sep 24 10:48:34 2005] BEGIN HANDLER MESSAGES
Going to hybernate in:
[Sat Sep 24 10:48:34 2005] END HANDLER MESSAGES
[Sat Sep 24 10:48:34 2005] action exited with status 0
[Sat Sep 24 10:48:34 2005] completed event "button/power PWRF 00000080 0000000a"


Zoals je ziet in dit geval 2 events als gevolg van het indrukken van de powerknop. De tweede event wordt pas opgevolgd als de eerste volledig is afgehandeld. De boodschap "Going to hybernate in:" komt overigens uit m'n script.
Super_ik schreef op zaterdag 24 september 2005 @ 11:27:
en als je knop inderdaad last heeft van contactdender kun je er een condensator op solderen
Ik heb niet veel zin om te gaan zitten solderen. Ik heb liever een softwarematige oplossing. :+

  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
Heeft iemand nog ideeen over hoe ik die queue kan benaderen/aanpassen?

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

ctrl -a del (ik denk dat ik het heb)

ik weet niet hoe dit in bash moet maar het is wel een oplossing mischien kan iemand anders je hier mee weer verder helpen.

hex het volg nummer van de powerbutton actie 1 2 3 4 5 6 7 8 9 a b c enz
foo een file met de hex waarde


boot:
foo = -10 (of zo iets)

suspend:
is (foo + 3) kleiner dan hex
sla hex nummer op in foo
suspend


waneer je weer uit suspend gaat is (foo + 3) groter dan hex en er gebeurt nix.

>.< >.< >.< >.<


  • Wilke
  • Registratie: December 2000
  • Nu online
Heh, dat dit zo werkt...inderdaad ergens wel grappig, maar niet bepaald handig. Weet niemand een manier om de event-queue gewoon leeg te gooien?

  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
Ik heb idd ook aan die boot-optie zitten denken, maar omdat ik van te voren niet weet hoeveel events er worden getriggered werkt dat niet echt handig. Tweede optie die ik heb overwogen was er een cron-job aan te hangen, maar dat gooit alle voordelen van het hele event-gebaseerde systeem wel weg.

Ik heb ook maar een lijntje uitgegooid op het gentoo.org forum. Ben benieuwd of daar wat uit komt :)

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 21:46

BoAC

Memento mori

Blijkbaar als je hem 'cat' wordt hij gereset:
24.6. Event queue for acpid

event

This is where ACPI events are written so that userspace applications can
process them. If acpid is running, it will read the events and when you try
to cat them, the file will be empty. If you have no daemon running to
process events, you can cat this file to look at them, and they will be in
the same format as in /var/log/acpid. See Acpid events for more information.
acpi howto ;)

  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
BoAC schreef op maandag 26 september 2005 @ 13:10:
Blijkbaar als je hem 'cat' wordt hij gereset:
[...]
Ik heb zitten kijken, en het klinkt goed. 8) Het bestand /proc/acpi/event is overigens geen bestand maar een device. Je kunt m niet catten als acpid nog draait (device locked). Als je acpid stopt, en dan cat, dan maakt dit commando idd de queue leeg. Omdat t echter n device is, kun je m niet zonder time-out catten, anders blijft dat eeuwig doorlopen. Tot zover lukt me dit wel met scripten, maar hoe zet ik een time-out op een commando?

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 21:46

BoAC

Memento mori

apyss schreef op maandag 26 september 2005 @ 13:58:
...

maar hoe zet ik een time-out op een commando?
[rip]
code:
1
2
3
4
        ${CMD} >/dev/null &
        local pid=$!
        (sleep 30; kill -9 ${pid} >&/dev/null) &
        wait ${pid}
[/rip]
:P

[ Voor 4% gewijzigd door BoAC op 26-09-2005 14:20 ]


  • apyss
  • Registratie: April 2000
  • Laatst online: 02-12-2024
Het werkt!!! _/-\o_

Volgende scriptje is t geworden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

/etc/init.d/acpid pause

CMD="cat /proc/acpi/event"
${CMD} >/dev/null &
pid=$!
(sleep 5; kill -9 ${pid} >&/dev/null) &
wait ${pid}

/etc/init.d/acpid start

/bin/echo -n disk >| /sys/power/state


fnx voor alle hulp!
Pagina: 1