__lwpins32, __lwpins64

Требуется Visual Studio 2010 с пакетом обновления 1 (SP1).

Только для систем Microsoft

Формирует инструкцию облегченного профилирования (LWP) lwpins для вставки записи события пользователя в активный кольцевой буфер.

unsigned char __lwpins32(
   unsigned int data2,
   unsigned int data1,
   unsigned int flags
);

unsigned char __lwpins64(
   unsigned __int64 data2,
   unsigned int data1,
   unsigned int flags
);

Параметры

  • [входящий] data2
    32- или 64-битный параметр, записываемый в поле Data2 записи кольцевого буфера LWP.

  • [входящий] data1
    32-битный параметр, записываемый в поле Data1 записи кольцевого буфера LWP.

  • [входящий] flags
    32-битный параметр, нижние 16 битов из которого записываются в поле Flags записи кольцевого буфера LWP.

Возвращаемое значение

Символ без знака, имеющий значение 1, если кольцевой буфер был полон; в противном случае — 0.

Требования

Встроенный объект

Архитектура

__llwpins32

LWP

__llwpins64

LWP, только X64

Файл заголовка <intrin.h>

Заметки

Эти встроенные инструкции можно использовать для записи важных событий с EventId 255 в кольцевой буфер облегченного профилирования. В отличие от lwpval, инструкция lwpins выполняет запись в буфер при каждом своем выполнении. Дополнительные сведения см. в разделе __lwpval32.

Когда облегченное профилирование включено, эти встроенные инструкции немедленно делают запись в следующей доступной ячейке активного кольцевого буфера LWP и возвращают 0. Если кольцевой буфер полон, новая запись замещает последнюю запись в буфере, и встроенная инструкция возвращает 1. Когда облегченное профилирование не включено, эти встроенные инструкции возвращают 0 без оповещения.

И __lwpins32, и __lwpins64 записывают значение параметра data2 в поле Data2 записи кольцевого буфера (байты 23-16), параметра data1 в поле Data1 (байты 7-4) и параметра flags в поле Flags (байты 3-2). Обратите внимание, что параметр flags должен быть константным и будет усечен до 16 бит. Встроенная инструкция __lwpins32 устанавливает байты 23–20 в записи кольцевого буфера равными нулю.

Инструкция lwpins входит в состав семейства инструкций LWP. Инструкции LWP требуют поддержки как аппаратного обеспечения, так и операционной системы. Чтобы определить, имеется ли аппаратная поддержка LWP, вызовите встроенную инструкцию __cpuid с InfoType = 0x80000001 и проверьте бит 15 в CPUInfo[2] (ECX). Этот бит равен 1, если LWP поддерживается, и 0 в противном случае. Определив, что процессор поддерживает LWP, вызовите встроенную инструкцию __cpuid с InfoType = 0x8000001C и проверьте бит 0 в CPUInfo[0] (EAX). Этот бит равен 1, если операционная система также поддерживает LWP, и 0 в противном случае. Эта проверка __cpuid также возвращает дополнительные сведения о реализации LWP. Дополнительные сведения см. в описании инструкции __llwpcb, а также в документе "Lightweight Profiling Specification" корпорации AMD (публикация № 43724).

Пример см. в разделе __llwpcb.

См. также

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

__llwpcb

__lwpval32, __lwpval64

__slwpcb

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

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

Дата

Журнал

Причина

Март 2011

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

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