__lwpval32, __lwpval64
Требуется Visual Studio 2010 с пакетом обновления 1 (SP1).
Только для систем Microsoft
Формирует инструкцию облегченного профилирования (LWP) lwpval для вставки записи образца значения в активный кольцевой буфер.
void __lwpval32(
unsigned int data2,
unsigned int data1,
unsigned int flags
);
void __lwpval64(
unsigned __int64 data2,
unsigned int data1,
unsigned int flags
);
Параметры
[входящий] data2
32- или 64-битный параметр, записываемый в поле Data2 записи кольцевого буфера LWP.[входящий] data1
32-битный параметр, записываемый в поле Data1 записи кольцевого буфера LWP.[входящий] flags
32-битный параметр, нижние 16 битов из которого записываются в поле Flags записи кольцевого буфера LWP.
Возвращаемое значение
Отсутствует.
Требования
Встроенный объект |
Архитектура |
---|---|
__lwpval32 |
LWP |
__lwpval64 |
LWP, только X64 |
Файл заголовка <intrin.h>
Заметки
Эти встроенные инструкции можно использовать для записи образцов значений с EventID 1 в кольцевой буфер облегченного профилирования. В отличие от lwpins, инструкция lwpval выполняет запись в буфер только при каждом k-том выполнении lwpval, где k-1 — значение поля EventInterval1 в LWPCB. Дополнительные сведения см. в разделе __lwpins32.
После того, как запись сделана, она переходит в следующую доступную ячейку активного кольцевого буфера LWP. Если кольцевой буфер полон, новая запись замещает последнюю запись в буфере. Когда облегченное профилирование не включено или LWP включено, однако не включено событие Programmed Value Sample, эти встроенные инструкции никак не отражаются на кольцевом буфере.
И __lwpval32, и __lwpval64 записывают значение параметра data2 в поле Data2 записи кольцевого буфера (байты 23-16), параметра data1 в поле Data1 (байты 7-4) и параметра flags в поле Flags (байты 3-2). Обратите внимание, что параметр flags должен быть константным и будет усечен до 16 бит. Встроенная инструкция __lwpval32 устанавливает байты 23–20 в записи кольцевого буфера равными нулю.
Инструкция lwpval входит в семейство инструкций LWP. Инструкции LWP требуют поддержки как аппаратного обеспечения, так и операционной системы. Чтобы определить, имеется ли аппаратная поддержка LWP, вызовите встроенную инструкцию __cpuid с InfoType = 0x80000001 и проверьте бит 15 в CPUInfo[2] (ECX). Этот бит равен 1, если LWP поддерживается, и 0 в противном случае. Определив, что процессор поддерживает LWP, вызовите встроенную инструкцию __cpuid с InfoType = 0x8000001C и проверьте бит 0 в CPUInfo[0] (EAX). Этот бит равен 1, если операционная система также поддерживает LWP, и 0 в противном случае. Если операционная система не поддерживает LWP, проверьте бит 1 в CPUInfo[0](EAX), — он будет равен 1, если инструкция LWPVAL доступна. Эта проверка __cpuid также возвращает дополнительные сведения о реализации LWP. Дополнительные сведения см. в описании инструкции __llwpcb, а также в документе "Lightweight Profiling Specification" корпорации AMD (публикация № 43724).
Пример см. в разделе __llwpcb.
См. также
Другие ресурсы
Встроенные объекты LWP, добавленные в Visual Studio 2010 с пакетом обновления 1 (SP1)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Март 2011 |
Добавлено это содержимое. |
Изменение функции SP1. |