Guía de seguimiento dinámico de Solaris

Creación de sondeos SDT

Si usted es desarrollador de controladores de dispositivos, puede que esté interesado en crear sus propios sondeos SDT en su controlador Solaris. El efecto de sondeo deshabilitado de SDT es básicamente el coste de diversas instrucciones de sistema que no realizan ninguna operación. Por lo tanto, le animamos a que añada sondeos SDT a sus controladores de dispositivo según los necesite. A menos que estos sondeos afecten de forma negativa al rendimiento, puede dejarlos en el código que envíe.

Declaración de sondeos

Los sondeos SDT se declaran utilizando las macros DTRACE_PROBE, DTRACE_PROBE1, DTRACE_PROBE2, DTRACE_PROBE3 y DTRACE_PROBE4 de <sys/sdt.h>. El nombre de módulo y el nombre de función de un sondeo basado en SDT corresponde al módulo del núcleo y a la función del sondeo. El nombre del sondeo depende del nombre proporcionado en la macro DTRACE_PROBEn. Si el nombre contiene dos guiones bajos no consecutivos (__), el nombre del sondeo es tal y como aparece escrito en la macro. Si el nombre contiene dos guiones bajos consecutivos, el nombre del sondeo convierte los guiones bajos consecutivos a un único guión (-). Por ejemplo, si una macro DTRACE_PROBE especifica transaction__start, el nombre del sondeo SDT será transaction-start. Esta sustitución permite al código C proporcionar nombres de macro que no son identificadores C válidos sin necesidad de especificar una cadena.

DTrace incluye el nombre del módulo del núcleo y el nombre de función como parte de la tupla que identifica un sondeo, por lo que no es necesario que incluya esta información en el nombre del sondeo para evitar la colisión de espacio de nombre. Es posible utilizar el comando dtrace -l -P sdt -m module en su controlador module para visualizar una lista de los sondeos que ha instalado y los nombres completos que verán los usuarios de DTrace.

Argumentos de sondeos

Los argumentos para cada SDT son los argumentos especificados en la referencia de macro DTRACE_PROBEn. El número de argumentos depende de la macro utilizada para crear el sondeo: DTRACE_PROBE1 especifica un argumento, DTRACE_PROBE2 especifica dos argumentos, y así, sucesivamente. A la hora de declarar sus sondeos SDT, puede minimizar su efecto de sondeo deshabilitado no cancelando los punteros de referencia y no cargándolos a partir de variables globales en los argumentos del sondeo. Tanto la cancelación de referencia del puntero como la carga de variables locales pueden hacerse de forma segura en acciones D que habiliten sondeos, de forma que los usuarios de DTrace pueden solicitar estas acciones sólo cuando sean necesarias.