ACPI kennt GPEs General Purpose Events. Die Events können durch alles mögliche ausgelöst werden u.a. Power Taste, Serielle Schnittstelle.
Jeder dieser Events hat eine Nummer. Die Nummern sind nicht standardisiert, aber es gibt gebräuchliche Nummern.
0x6D wird u.a. von LAN und USB verwendet.
0x0D müsste ich nachschauen.
Geräten sind _PWR Methoden zugeordnet, die bestimmen aus welchem Sleep State ein Gerät ein Wake auslösen kann.
Die _PWR wird nicht in der DSDT oder SSDT aufgerufen sondern vom Host Computer aus. Was der mit der Info macht ist seine Sache.
Diese _PWR Methode ruft für gewöhnlich GPRW mit der Eventnummer und Sleep State als Argumenten auf.
Beim Mac muss, bei Abfragen für bestimmte Events, 0 als zweiter Wert zurückkommen.
Wir haben aber gesehen, dass in der Originalversion, die über die ich geschrieben habe, solange irgendein Sleep State enabled ist, immer ein Wert zwischen 1 und 4 im zweiten Wert zurück kommt (entweder der Wert in Argument1 oder der höchste enabelte Sleep State).
Die neue Version, die im ersten Post, schaut nach ob das Argument0 einer dieser Events ist und ob es sich um einen Rechner mit Darwin handelt.
Trifft beides zu gibt es Argument0 im ersten Wert (wie sonst auch) und 0 im zweiten Wert (Statt dem abgefragtem, bzw. dem höchsten möglichen Sleep Wert) zurück.
Statt eine extra Variable (PRWP in der Originalversion) anzulegen gibt die neue Funktion die Werte direkt als Package zurück - das ist nur Kosmetik.
Ist Argument0 keiner der beiden Eventnummern oder ist es kein Rechner mit Darwin, dann wir die Originalfunktion verwendet.