Overzicht van wait/wake IRP-voltooiing

Een wacht/wake-IRP wordt voltooid wanneer er een wake-up signaal binnenkomt. Het ontwaaksignaal is apparaatspecifiek, maar is over het algemeen een normale servicegebeurtenis voor het apparaat. Een binnenkomende ring kan bijvoorbeeld ertoe leiden dat een slaapmodem wakker wordt.

In de volgende figuur ziet u de stappen voor het voltooien van een wacht/ontwaak-IRP.

Stappen voor het voltooien van een wacht/ontwaak-IRP.

Wanneer het signaal optreedt, gaat de besturing opnieuw naar de buschauffeur op het punt waar de bus detecteert dat het apparaat is ontwaakt. De bestuurder van de bus bedient het evenement zoals vereist en roept IoCompleteRequest aan om de IRP_MN_WAIT_WAKE IRP voor zijn PDO te voltooien.

De I/O-manager roept vervolgens de IoCompletion-routine aan die is ingesteld door het volgende hogere stuurprogramma in de apparaatstack. In de IoCompletion-routine behandelt dat stuurprogramma het wake-upsignaal indien nodig en roept IoCompleteRequest aan om de IRP te voltooien. De I/O-manager blijft IoCompletion-routines aanroepen die een back-up van de apparaatstack maken totdat alle stuurprogramma's de IRP hebben voltooid.

In de IoCompletion-routine moet elk stuurprogramma dat meer dan één onderliggend apparaat opsommen (meer dan één PDO maakt) en wacht-/wake-aanvragen van meer dan één dergelijk apparaat heeft ontvangen, zichzelf een wacht-/wake-IRP verzenden om zichzelf opnieuw te armeren voor wachten/waken op een ander kind. Voor meer informatie, zie Inzicht in het pad van wacht-/wake-IRPs via een apparaatstructuur.

Na het aanroepen van IoCompletion-routines die zijn ingesteld door stuurprogramma's terwijl ze de IRP down de stack hebben doorgegeven, roept de I/O-manager de callbackroutine aan die is ingesteld door de eigenaar van het energiebeleid toen deze de wacht-/wake-IRP aanvraagde. In de callback-routine moet de beleidsbeheerder het apparaat terugbrengen naar de werkstatus en een wacht-op/ontwaak-IRP voor de PDO van het kind afhandelen, indien van toepassing.

Door het voltooien van het IRP van het kind wordt de I/O-manager in staat ioCompletion-routines aan te roepen die zijn ingesteld door stuurprogramma's in de apparaatstack van het kind, enzovoort. Uiteindelijk bepaalt de beleidseigenaar die de oorspronkelijke wacht-/wake-IRP op de devnode heeft gestart, dat het apparaat het wake-upsignaal heeft geactiveerd en alle wacht-/wake-IRPs zijn voltooid.