Partager via


__lwpins32, __lwpins64

Visual Studio 2010 SP1 est requis

Spécifique à Microsoft

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

unsigned char __lwpins32(
   unsigned int data2,
   unsigned int data1,
   unsigned int flags
);

unsigned char __lwpins64(
   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

Caractère non signé qui a la valeur 1 si la mémoire tampon de l'anneau est saturée, sinon 0.

Configuration requise

Intrinsèque

Architecture

__llwpins32

LWP

__llwpins64

LWP, X64 uniquement

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

Notes

Ces fonctions intrinsèques peuvent être utilisées pour enregistrer des événements importants avec EventId 255 dans la mémoire tampon de l'anneau du profilage léger. Contrairement à lwpval, l'instruction lwpins écrit dans la mémoire tampon chaque fois qu'elle est exécutée. Consultez __lwpval32 pour plus d'informations.

Lorsque le profilage léger est activé, ces fonctions intrinsèques écrivent immédiatement un enregistrement dans l'emplacement disponible suivant de la mémoire tampon d'anneau LWP active et renvoient la valeur 0. Si la mémoire tampon de l'anneau est saturée, le nouvel enregistrement remplace le dernier enregistrement dans la mémoire tampon et la fonction intrinsèque retourne la valeur 1. Lorsque le profilage léger n'est pas activé, ces intrinsèques retournent 0 en silence.

__lwpins32 et __lwpins64 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. __lwpins32 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 lwpins fait partie de la famille LWP des instructions. Les instructions LWP requièrent à la fois 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. 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

__llwpcb

__lwpval32, __lwpval64

__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.