Partager via


__lwpval32, __lwpval64

Visual Studio 2010 SP1 est requis

Spécifique à Microsoft

Génère le lwpval de l'instruction du profilage léger (LWP) pour insérer un enregistrement d'exemple de valeur dans la mémoire tampon d'anneau LWP active.

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

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

Paramètres

  • [in] data2
    Paramètre de 32 ou 64 bits qui sera enregistré dans le champ Data2 d'un enregistrement de mémoire tampon de l'anneau de LWP.

  • [in] data1
    Paramètre de 32 bits qui sera enregistré dans le champ Data1 d'un enregistrement de mémoire tampon de l'anneau de LWP.

  • [in] flags
    Paramètre de 32 bits dans lequel les 16 bits inférieurs sont enregistrés dans le champ Indicateurs d'un enregistrement de la mémoire tampon de l'anneau de LWP.

Valeur de retour

Aucun

Configuration requise

Intrinsèque

Architecture

__lwpval32

LWP

__lwpval64

LWP, X64 uniquement

Fichier d'en-tête <intrin.h>

Notes

Ces fonctions intrinsèques peuvent être utilisées pour enregistrer des exemples de valeurs avec EventId 1 dans la mémoire tampon de l'anneau du profilage léger. Contrairement à lwpins, l'instruction lwpval écrit seulement dans la mémoire tampon toutes les k fois que lwpval est exécuté, où k-1 est la valeur de du champ EventInterval1 de LWPCB. Consultez __lwpins32 pour plus d'informations.

Lorsqu'un enregistrement est écrit, il passe dans l'emplacement disponible suivant de la mémoire tampon d'anneau LWP active. Si la mémoire tampon de l'anneau est saturée, le nouvel enregistrement remplace le dernier enregistrement dans la mémoire tampon. Lorsque le profilage léger n'est pas activé ou que LWP est activé, mais que l'événement Exemple de valeur programmée n'est pas activé, ces fonctions intrinsèques n'ont aucun effet sur la mémoire tampon de l'anneau.

__lwpval32 et __lwpval64 enregistrent la valeur de data2 dans le champ Data2 de l'enregistrement de la mémoire tampon de l'anneau (octets 23-16), data1 dans le champ Data1 (octets 7-4), et flags dans le champ Indicateurs (octets 3-2). Notez que flags doit être constant et sera tronqué à 16 bits. __lwpval32 intrinsèque définit les octets 23 à 20 de l'enregistrement de la mémoire tampon de l'anneau avec la valeur zéro.

L'instruction lwpval fait partie de la famille LWP d'instructions. Les instructions LWP nécessitent une prise en charge du matériel et du système d'exploitation. Pour déterminer la prise en charge du matériel de LWP, appelez la fonction intrinsèque __cpuid avec InfoType = 0x80000001 et vérifiez le bit 15 de CPUInfo[2] (ECX). Ce bit est égal à 1 lorsque LWP est pris en charge, sinon il est égal à 0. Dès que vous savez que LWP est pris en charge par le processeur, appelez la fonction intrinsèque __cpuid avec InfoType = 0x8000001C et vérifiez le bit 0 de CPUInfo[0] (EAX). Ce bit est égal à 1 si le système d'exploitation prend également en charge LWP, sinon il est égal à 0. Si le système d'exploitation prend en charge LWP, vérifiez le bit 1 de CPUInfo [0] (EAX) qui est égal à 1 si l'instruction LWPVAL est disponible. Ce test __cpuid retourne également des informations supplémentaires sur l'implémentation LWP. Pour plus d'informations, consultez __llwpcb et « Spécification du profilage LWP (Lightweight Profiling) d'AMD » (Numéro de publication 43724) (éventuellement en anglais).

Pour obtenir un exemple, consultez __llwpcb.

Voir aussi

Autres ressources

__lwpins32, __lwpins64

__llwpcb

__slwpcb

Fonctions LWP intrinsèques ajoutées pour Visual Studio 2010 SP1

Historique des modifications

Date

Historique

Motif

Mars 2011

Ce contenu a été ajouté.

Modifications de fonctionnalités dans le SP1.