Funzione di callback POFXCALLBACKPROCESSORHALT (pep_x.h)
La routine ProcessorHalt prepara il processore da arrestare.
Sintassi
POFXCALLBACKPROCESSORHALT Pofxcallbackprocessorhalt;
NTSTATUS Pofxcallbackprocessorhalt(
[in] ULONG Flags,
[in, out, optional] PVOID Context,
[in] PPROCESSOR_HALT_ROUTINE Halt
)
{...}
Parametri
[in] Flags
Flag che indicano le proprietà dello stato di inattività immesso dal processore. Il parametro Flags è impostato su zero o sull'OR bit per bit di uno o più dei bit di flag seguenti.
Nome contrassegno | Valore | Descrizione |
---|---|---|
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE | 0x01 | La routine di callback Stop di PEP è responsabile dello scaricamento delle cache del processore. Se questo flag non è impostato, ProcessorHalt scarica le cache all'ingresso nello stato di inattività del processore e invalida le cache all'uscita da questo stato. |
PROCESSOR_HALT_CACHE_COHERENT | 0x02 | Preparare il processore per immettere uno stato di inattività in cui le cache del processore rimarranno coerenti. |
PROCESSOR_HALT_CONTEXT_RETAINED | 0x04 | Preparare il processore per immettere uno stato di inattività in cui verrà mantenuto il contesto del thread del processore. |
PROCESSOR_HALT_RETURN_NOT_SAFE | 0x08 | La routine di callback Stop del PEP non viene restituita. Impostare questo flag se il callback Interrompi esegue la transizione del processore a uno stato di perdita del contesto e di controllo dell'alimentazione che non può essere annullato dall'hardware. Quando questo flag è impostato, il sistema operativo considererà un ritorno dal callback Di interruzione come errore irreversibile. |
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND | 0x16 |
[in, out, optional] Context
Puntatore a un contesto di interruzione del processore definito da PEP. Questo puntatore viene passato come parametro alla routine di callback Halt . Questo contesto è opaco al framework di risparmio energia di Windows (PoFx).
[in] Halt
Puntatore a una routine di callback Stop implementata da PEP. PoFx chiama questa routine dopo il completamento delle operazioni di preparazione per interrompere il processore. Durante questo callback, si prevede che il PEP passi il processore allo stato arrestato .
Valore restituito
ProcessorHalt restituisce STATUS_SUCCESS se il processore è pronto per essere arrestato correttamente. I valori restituiti di errore possibili includono il codice di stato seguente.
Valore restituito | Descrizione |
---|---|
|
Il parametro Halt è NULL; o un valore di flag non valido è stato specificato in Flags; o Flag contiene una combinazione non valida di bit di flag. Per altre informazioni, vedere la sezione Osservazioni. |
|
La routine di callback Stop di PEP ha restituito in modo imprevisto da uno stato di inattività in cui il contesto hardware del processore non è stato mantenuto. |
Commenti
Questa routine viene implementata dal framework di risparmio energia (PoFx) e viene chiamata dal plug-in di estensione della piattaforma (PEP). Il membro ProcessorHalt della struttura PEP_KERNEL_INFORMATION_STRUCT_V3 è un puntatore a una routine ProcessorHalt .
Prima di interrompere il processore, il PEP chiama la routine ProcessorHalt per offrire a PoFx l'opportunità di salvare il contesto hardware del processore. Se necessario, ProcessorHalt salva questo stato internamente in PoFx in modo che lo stato possa essere ripristinato in un secondo momento quando il processore esce dallo stato di inattività. Dopo aver preparato il processore per entrare nello stato di inattività, ProcessorHalt chiama la routine di callback Stop del PEP per arrestare il processore.
Nell'ambito della gestione del PEP di una notifica di PEP_NOTIFY_PPM_IDLE_EXECUTE , il PEP deve trasferire il processore allo stato di inattività selezionato dal PEP. Di seguito sono riportati i due modi per entrare nello stato di inattività del processore:
- Per uno stato di inattività del processore in cui le cache del processore rimangono coerenti in modo che venga mantenuto tutto lo stato del sistema e del processore, il PEP può entrare direttamente nello stato di inattività senza prima chiamare ProcessorHalt.
- Per uno stato di inattività del processore in cui le cache del processore potrebbero non rimanere coerenti o uno stato di inattività in cui il contesto hardware del processore non viene mantenuto, il PEP deve chiamare ProcessorHalt prima di passare il processore allo stato di inattività.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 1 e PROCESSOR_HALT_RETURN_NOT_SAFE = 1
La routine di callback Stop di PEP deve restituire da qualsiasi stato in cui viene mantenuto il contesto.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 1 e PROCESSOR_HALT_CACHE_COHERENT = 1
Il flag cache-flush-override deve essere impostato solo se si immette uno stato di inattività che non è coerente nella cache.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 e PROCESSOR_HALT_CACHE_COHERENT = 0
Il flag cache-flush-override deve essere impostato per qualsiasi interruzione coerente della cache.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 0 e PROCESSOR_HALT_CACHE_COHERENT = 1
Gli stati di inattività che perdono il contesto hardware del processore (e quindi usano il protocollo di parcheggio multiprocessore per uscire dallo stato di inattività e restituire il controllo al sistema operativo) non sono stati coerenti con la cache.
Il PEP può chiamare questa routine in IRQL <= HIGH_LEVEL.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato a partire da Windows 10. |
Piattaforma di destinazione | Windows |
Intestazione | pep_x.h (includere Pep_x.h) |
IRQL | <= HIGH_LEVEL |