Manuel de suivi dynamique Solaris

Création de sondes SDT

En tant que développeur de pilotes de périphériques, vous souhaiterez peut-être créer vos propres sondes SDT dans votre pilote Solaris. Les sondes désactivées du fournisseur SDT se traduisent essentiellement par le coût de plusieurs instructions machine non opérationnelles. Vous êtes, par conséquent, encouragé à ajouter des sondes SDT à vos pilotes de périphérique, au besoin. À moins que ces sondes n'aient une incidence négative sur les performances, vous pouvez les conserver dans votre code de livraison.

Déclaration des sondes

Les sondes SDT sont déclarées à l'aide des macros DTRACE_PROBE, DTRACE_PROBE1, DTRACE_PROBE2, DTRACE_PROBE3 et DTRACE_PROBE4 à partir de <sys/sdt.h>. Le nom du module et le nom des fonctions d'une sonde basée sur le fournisseur SDT correspondent au module du noyau et aux fonctions de la sonde. Le nom de la sonde dépend du nom donné dans la macro DTRACE_PROBEn. Si le nom ne contient pas deux traits de soulignement consécutifs (__), le nom de la sonde est écrit dans la macro. Si le nom contient deux traits de soulignement consécutifs, ils sont convertis en un tiret simple ( -) dans le nom de la sonde. Par exemple, si une macro DTRACE_PROBE spécifie transaction__start, la sonde SDT s'appellera transaction-start. Cette substitution permet au code C de fournir des noms de macro ne constituant pas des identificateurs en C valides sans spécifier de chaîne.

Comme DTrace intègre au tuple identifiant une sonde le nom du module du noyau et des fonctions, vous n'avez pas à ajouter ces informations dans le nom de la sonde pour éviter les collisions d'espace de noms. Vous pouvez utiliser la commande dtrace -l -P sdt -m module sur votre pilote module pour répertorier les sondes que vous avez installées, ainsi que leurs noms complets, tels que les utilisateurs de DTrace pourront les afficher.

Arguments des sondes

Les arguments de chaque sonde SDT sont les arguments spécifiés dans la référence de macro DTRACE_PROBEn correspondante. Le nombre d'arguments dépend de la macro utilisée pour créer la sonde : DTRACE_PROBE1 spécifie un argument, DTRACE_PROBE2 spécifie deux arguments, etc. Lors de la déclaration de vos sondes SDT, vous pouvez réduire l'incidence des sondes désactivées en ne déréférençant pas les pointeurs et en ne chargeant pas les variables globales dans les arguments des sondes. Vous devez effectuer avec précaution le déréférencement des pointeurs et le chargement des variables dans les actions en D qui activent les sondes de sorte que les utilisateurs de DTrace puissent ne demander ces actions que lorsqu'ils en ont besoin.