__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.

См. также

Другие ресурсы

__lwpins32, __lwpins64

__llwpcb

__slwpcb

Встроенные объекты LWP, добавленные в Visual Studio 2010 с пакетом обновления 1 (SP1)

Журнал изменений

Дата

Журнал

Причина

Март 2011

Добавлено это содержимое.

Изменение функции SP1.