__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을 참조하십시오.
참고 항목
기타 리소스
Visual Studio 2010 SP1용으로 추가된 LWP 내장 함수
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 3월 |
이 내용이 추가되었습니다. |
SP1 기능 변경 |