Функция обратного вызова POFXCALLBACKPROCESSORHALT (pepfx.h)
Подпрограмма ProcessorHalt подготавливает процессор к остановке.
Синтаксис
POFXCALLBACKPROCESSORHALT Pofxcallbackprocessorhalt;
NTSTATUS Pofxcallbackprocessorhalt(
[in] ULONG Flags,
[in, out, optional] PVOID Context,
[in] PPROCESSOR_HALT_ROUTINE Halt
)
{...}
Параметры
[in] Flags
Флаги, указывающие свойства состояния простоя, введенного обработчиком. Параметр флагов имеет значение нулю или побитовое значение OR одного или нескольких из следующих битов флага.
Имя флага | Ценность | Описание |
---|---|---|
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE | 0x01 | Подпрограмма обратного вызова peP остановки отвечает за очистку кэшей процессора. Если этот флаг не задан, ProcessorHalt будет очищать кэши при входе в состояние простоя процессора и будет недействительными кэши при выходе из этого состояния. |
PROCESSOR_HALT_CACHE_COHERENT | 0x02 | Подготовьте обработчик для ввода состояния простоя, в котором кэши процессора будут оставаться последовательными. |
PROCESSOR_HALT_CONTEXT_RETAINED | 0x04 | Подготовьте обработчик для ввода состояния простоя, в котором будет сохранен контекст потока процессора. |
PROCESSOR_HALT_RETURN_NOT_SAFE | 0x08 | Подпрограмма обратного вызова peP остановки гарантированно не возвращается. Установите этот флаг, если обратный вызов остановить переключает процессор в состояние потери контекста, состояние с питанием, которое не может быть отменено оборудованием. При установке этого флага операционная система будет обрабатывать возврат из обратного вызова остановить как неустранимая ошибка. |
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND | 0x16 |
[in, out, optional] Context
Указатель на контекст остановки процессора, определенный PEP. Этот указатель передается в качестве параметра в подпрограмму обратного вызова остановки. Этот контекст непрозрачн для платформы управления питанием Windows (PoFx).
[in] Halt
Указатель на процедуру обратного вызова, реализованную в PEP, остановить. PoFx вызывает эту подпрограмму после подготовки к остановке процессора. Во время обратного вызова ожидается, что PEP перенаквал обработчика в состояние остановлено.
Возвращаемое значение
ProcessorHalt возвращает STATUS_SUCCESS, если процессор успешно готов к остановке. Возможные значения возвращаемых ошибок включают следующий код состояния.
Возвращаемое значение | Описание |
---|---|
|
Параметр "Остановить" имеет значение NULL; или недопустимое значение флага было указано в Флаги; или Флаги содержат незаконное сочетание битов флагов. Дополнительные сведения см. в разделе "Примечания". |
|
Подпрограмма обратного вызова peP остановки неожиданно возвращается из состояния простоя, в котором не сохранялся аппаратный контекст процессора. |
Замечания
Эта подпрограмма реализуется платформой управления питанием (PoFx) и вызывается подключаемым модулем расширения платформы (PEP). Элемент ProcessorHalt структуры PEP_KERNEL_INFORMATION_STRUCT_V3 является указателем на подпрограмму ProcessorHalt.
Перед остановкой процессора PEP вызывает подпрограмму ProcessorHalt, чтобы предоставить PoFx возможность сохранить аппаратный контекст процессора. При необходимости ProcessorHalt сохраняет это состояние внутри PoFx, чтобы состояние можно было восстановить при выходе процессора из состояния простоя. После подготовки процессора к вводу состояния простоя ProcessorHalt вызывает подпрограмму обратного вызова PEP Остановить обратного вызова, чтобы остановить процессор.
В рамках обработки уведомления peP PEP_NOTIFY_PPM_IDLE_EXECUTE PEP необходимо перенести обработчик в состояние простоя, выбранного PEP. Ниже приведены два способа ввода состояния простоя процессора:
- Для состояния простоя процессора, в котором кэш процессора остается последовательным таким образом, чтобы все состояние системы и процессора сохранялось, PEP может ввести состояние простоя непосредственно без первого вызова ProcessorHalt.
- Для состояния простоя процессора, в котором кэши процессора могут не оставаться последовательными, или состояние простоя, в котором не сохраняется контекст оборудования процессора, PEP должен вызывать ProcessorHalt перед переходом процессора в состояние простоя.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 1 и PROCESSOR_HALT_RETURN_NOT_SAFE = 1
Подпрограмма обратного вызова PEP должна вернуться из любого состояния, в котором сохраняется контекст.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 1 и PROCESSOR_HALT_CACHE_COHERENT = 1
Флаг переопределения кэша должен быть установлен только при вводе состояния простоя, которое не является последовательным.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 и PROCESSOR_HALT_CACHE_COHERENT = 0
Флаг переопределения кэша должен быть установлен для любой последовательной остановки, отличной от кэша.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 0 и PROCESSOR_HALT_CACHE_COHERENT = 1
Все состояния простоя, которые теряют контекст оборудования процессора (и поэтому используют протокол многопроцессорной парковки для выхода из состояния простоя и возврата управления в операционную систему) не являются согласованными состояниями кэша.
PEP может вызывать эту подпрограмму в IRQL <= HIGH_LEVEL.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается начиная с Windows 10. |
целевая платформа | Виндоус |
заголовка | pepfx.h (include Pep_x.h) |
IRQL | <= HIGH_LEVEL |