__lwpval32, __lwpval64

업데이트: 2011년 3월

Visual Studio 2010 SP1이 필요합니다.

Microsoft 전용

LWP(lightweight profiling) 명령 lwpval을 생성하여 값 샘플 레코드를 활성 LWP 링 버퍼에 삽입합니다.

void __lwpval32(
   unsigned int data2,
   unsigned int data1,
   unsigned int flags
);

void __lwpval64(
   unsigned __int64 data2,
   unsigned int data1,
   unsigned int flags
);

매개 변수

  • [in] data2
    LWP 링 버퍼 레코드의 Data2 필드에 기록할 32 또는 64비트 매개 변수입니다.

  • [in] data1
    LWP 링 버퍼 레코드의 Data1 필드에 기록할 32비트 매개 변수입니다.

  • [in] flags
    LWP 링 버퍼 레코드의 Flags 필드에 기록될 하위 16비트의 32비트 매개 변수입니다.

반환 값

없음

요구 사항

내장

아키텍처

__lwpval32

LWP

__lwpval64

LWP, X64 전용

헤더 파일 <intrin.h>

설명

이러한 intrinsics는 간단한 프로파일링 링 버퍼에서 EventID 1을 사용하여 값 샘플을 기록하는 데 사용할 수 있습니다. lwpins와 달리 lwpval 명령은 k번째 lwpval 실행시마다 버퍼에 쓰여집니다. 여기서 k-1은 LWPCB의 EventInterval1 필드의 값입니다. 자세한 내용은 __lwpins32를 참조하십시오.

레코드를 기록할 때 활성 LWP 링 버퍼의 다음 사용할 수 있는 슬롯으로 이동합니다. 링 버퍼가 가득 찬 경우 새 레코드는 버퍼의 마지막 레코드를 덮어씁니다. 간단한 프로파일링이 사용되지 않거나 LWP가 활성화되었지만 프로그램된 값 샘플 이벤트는 활성화되지 않았으면 이러한 intrinsics는 링 버퍼에 영향을 주지 않습니다.

__lwpval32__lwpval64는 data2의 값을 링 버퍼 레코드(바이트 23-16)의 Data2 필드에 기록하고, data1은 Data1 필드(바이트 7-4)에 기록하며 flags는 Flags 필드 (바이트 3-2)에 기록합니다. flags는 상수가 되어야 하며 16비트로 잘립니다. __lwpval32 intrinsic은 링 버퍼 레코드의 바이트 23-20을 0으로 설정합니다.

lwpval 명령은 명령의 LWP 패밀리의 일부입니다. LWP 명령을 사용하려면 하드웨어와 운영 체제에서 모두 지원해야 합니다. LWP에 대한 하드웨어 지원을 확인하려면 InfoType = 0x80000001을 사용하여 __cpuid intrinsic을 호출하고 CPUInfo[2] (ECX)의 비트 15를 확인합니다. LWP를 지원하는 경우 이 비트는 1이고, 그렇지 않으면 0입니다. LWP가 프로세서에 의해 지원된다는 것을 알게 되면 __cpuid intrinsic을 InfoType = 0x8000001C를 사용하여 호출하고 CPUInfo[0] (EAX)의 비트 0을 확인합니다. 운영 체제에서 LWP를 지원하는 경우 이 비트는 1이고, 그렇지 않으면 0입니다. 운영 체제가 LWP를 지원하는 경우 CPUInfo[0](EAX)의 비트 1을 확인하고, LWPVAL 명령을 사용할 수 있는 경우 1이 됩니다. 이 __cpuid 테스트는 LWP 구현에 대한 추가 정보도 반환합니다. 자세한 내용은 __llwpcb 및 AMD의 "Lightweight Profiling Specification"(발행 번호 43724)을 참조하십시오.

예제를 보려면 __llwpcb을 참조하십시오.

참고 항목

기타 리소스

__lwpins32, __lwpins64

__llwpcb

__slwpcb

Visual Studio 2010 SP1용으로 추가된 LWP 내장 함수

변경 기록

날짜

변경 내용

이유

2011년 3월

이 내용이 추가되었습니다.

SP1 기능 변경