__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.
См. также
Другие ресурсы
Встроенные объекты LWP, добавленные в Visual Studio 2010 с пакетом обновления 1 (SP1)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Март 2011 |
Добавлено это содержимое. |
Изменение функции SP1. |