更新 : 2011 年 3 月
Visual Studio 2010 SP1 が必要です。
Microsoft 固有の仕様 →
Lightweight Profiling (LWP) 命令 lwpins を生成して、ユーザー イベント レコードをアクティブな LWP リング バッファーに挿入します。
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
LWP リング バッファー レコードの Data2 フィールドに書き込まれる 32 または 64 ビットのパラメーター。[入力] data1
LWP リング バッファー レコードの Data1 フィールドに書き込まれる 32 ビットのパラメーター。[入力] flags
下位 16 ビットが LWP リング バッファー レコードの Flags フィールドに書き込まれる 32 ビットのパラメーター。
戻り値
リング バッファーがいっぱいの場合は値 1 を持ち、そうでない場合は値 0 を持つ符号なしの文字。
必要条件
組み込み |
アーキテクチャ |
---|---|
__llwpins32 |
LWP |
__llwpins64 |
LWP、X64 のみ |
ヘッダー ファイル <intrin.h>
解説
これらの組み込みを使用すると、EventId 255 の重要なイベントを Lightweight Profiling リング バッファーに記録できます。 lwpval とは異なり、lwpins 命令を実行するたびに、バッファーへの書き込みが行われます。 詳細については、「__lwpval32」を参照してください。
Lightweight Profiling が有効になっている場合、これらの組み込みはアクティブな LWP リング バッファーの次の空きスロットにレコードを即座に書き込み、0 を返します。 リング バッファーがいっぱいの場合、新しいレコードによってバッファー内の最後のレコードが上書きされ、組み込みは 1 を返します。 Lightweight Profiling が有効になっていない場合、これらの組み込みは何も行わずに 0 を返します。
__lwpins32 と __lwpins64 はどちらも、data2 の値をリング バッファー レコード (バイト 23-16) の Data2 フィールドに書き込み、data1 を Data1 フィールド (バイト 7-4) に書き込み、flags の値を Flags フィールド (バイト 3-2) に書き込みます。 flags は一定である必要があり、16 ビットに切り捨てられます。 __lwpins32 組み込みでは、リング バッファー レコードのバイト 23-20 をゼロに設定します。
lwpins 命令は、LWP ファミリの命令の一部です。 LWP 命令を使用するには、ハードウェア サポートとオペレーティング システム サポートの両方が必要です。 LWP に対するハードウェア サポートを確認するには、InfoType を 0x80000001 にして __cpuid 組み込みを呼び出し、CPUInfo[2] (ECX) のビット 15 をチェックします。 このビットは、LWP がサポートされている場合は 1 になり、サポートされていない場合は 0 になります。 LWP がプロセッサでサポートされていることを確認したら、InfoType を 0x8000001C にして __cpuid 組み込みを呼び出し、CPUInfo[0] (EAX) のビット 0 をチェックします。 このビットは、オペレーティング システムでも LWP がサポートされている場合は 1 になり、サポートされていない場合は 0 になります。 この __cpuid テストでは、LWP の実装に関する追加情報も返されます。 詳細については、__llwpcb および AMD の「Lightweight Profiling Specification (Lightweight Profiling の仕様)」(公開番号 43724) を参照してください。
例については、「__llwpcb」を参照してください。
参照
その他の技術情報
Visual Studio 2010 SP1 用に追加された LWP 組み込み
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2011 年 3 月 |
このコンテンツを追加。 |
SP1 機能変更 |