Handbuch zur dynamischen Ablaufverfolgung in Solaris

Integrierte Variablen

Die folgende Tabelle enthält eine vollständige Liste der in D integrierten Variablen. Dabei handelt es sich in allen Fällen um skalare, globale Variablen. Derzeit sind in D weder thread-lokale oder klausel-lokale Variablen noch integrierte assoziative Vektoren definiert.

Tabelle 3–1 Integrierte Variablen in DTrace

Typ und Name 

Beschreibung 

int64_t arg0, ..., arg9

Die ersten zehn Eingangsargumente für einen Prüfpunkt, dargestellt als unbearbeitete 64-Bit-Ganzzahlen. Werden dem aktuellen Prüfpunkt weniger als zehn Argumente übergeben, dann werden die übrigen Variablen auf Null zurückgesetzt. 

args[]

Ggf. die für den aktuellen Prüfpunkt eingegebenen Argumente. Auf den Vektor args[] wird über einen Ganzzahlenindex zugegriffen, doch die einzelnen Elemente sind als der dem jeweiligen Prüfpunktargument entsprechende Typ definiert. Wenn beispielsweise args[] durch einen Prüfpunkt für den Systemaufruf read(2) referenziert wird, nimmt args[0] den Typ int an, args[1] den Typ void * und args[2] den Typ size_t.

uintptr_t caller

Die Speicheradresse des aktuellen Threads im Programmschrittzähler kurz vor Eintritt in den aktuellen Prüfpunkt. 

chipid_t chip

Die CPU-Chipkennung des aktuellen physischen Chips. Weitere Informationen finden Sie in Kapitel 26Der Provider sched.

processorid_t cpu

Die CPU-Kennung der aktuellen CPU. Weitere Informationen finden Sie in Kapitel 26Der Provider sched.

cpuinfo_t *curcpu

Die CPU-Informationen der aktuellen CPU. Weitere Informationen finden Sie in Kapitel 26Der Provider sched.

lwpsinfo_t *curlwpsinfo

Der LWP-Status des leichtgewichtigen Prozesses (LWP), der für den aktuellen Thread steht. Diese Struktur ist in der Manpage proc(4) ausführlicher beschrieben.

psinfo_t *curpsinfo

Der Prozessstatus des Prozesses, der für den aktuellen Thread steht. Diese Struktur ist in der Manpage proc(4) ausführlicher beschrieben.

kthread_t *curthread

Die Adresse der im Betriebssystemkernel internen Datenstruktur für den aktuellen Thread kthread_t. Der Thread kthread_t ist in <sys/thread.h> definiert. Weitere Informationen zu dieser Variable und anderen Betriebssystemdatenstrukturen finden Sie in Solaris Internals.

string cwd

Name des aktuellen Arbeitsverzeichnisses des Prozesses, der für den aktuellen Thread steht. 

uint_t epid

Die EPID (ID des aktivierten Prüfpunkts) für den aktuellen Prüfpunkt. Diese Ganzzahl ist eine eindeutige Kennung eines bestimmten Prüfpunkts, der mit einem spezifischen Prädikat und Aktionssatz aktiviert wurde. 

int errno

Der von dem zuletzt durch diesen Thread ausgeführten Systemaufruf zurückgegebene Fehlerwert. 

string execname

Der für die Ausführung des aktuellen Prozesses an exec(2) übergebene Name.

gid_t gid

Die reale Gruppen-ID des aktuellen Prozesses. 

uint_t id

Die Prüfpunkt-ID für den aktuellen Prüfpunkt. Dabei handelt es sich um die systemweite, eindeutige Kennung des Prüfpunkts, wie sie von DTrace veröffentlicht und in der Ausgabe von dtrace -l angegeben wird.

uint_t ipl

Die Interrupt-Priorität (IPL) auf der aktuellen CPU zum Zeitpunkt der Auslösung des Prüfpunkts. Weitere Informationen zu Interrupt-Prioritäten und zur Interrupt-Behandlung im Solaris-Betriebssystemkernel finden Sie in Solaris Internals.

lgrp_id_t lgrp

Die Latenzgruppen-ID für die Latenzgruppe, der die aktuelle CPU angehört. Weitere Informationen finden Sie in Kapitel 26Der Provider sched.

pid_t pid

Die Prozess-ID des aktuellen Prozesses. 

pid_t ppid

Die Prozess-ID des dem aktuellen Prozess übergeordneten Prozesses. 

string probefunc

Der Funktionsname als Bestandteil der aktuellen Prüfpunktbeschreibung. 

string probemod

Der Modulname als Bestandteil der aktuellen Prüfpunktbeschreibung. 

string probename

Der Name als Bestandteil der aktuellen Prüfpunktbeschreibung. 

string probeprov

Der Providername als Bestandteil der aktuellen Prüfpunktbeschreibung. 

psetid_t pset

Die Prozessorsatz-ID des Prozessorsatzes, der die aktuelle CPU enthält. Weitere Informationen finden Sie in Kapitel 26Der Provider sched.

string root

Name des Root-Verzeichnisses des Prozesses, der für den aktuellen Thread steht. 

uint_t stackdepth

Die Stacktiefe des aktuellen Threads zum Zeitpunkt der Prüfpunktauslösung. 

id_t tid

Die Thread-ID des aktuellen Threads. Bei Threads für Benutzerprozesse stimmt dieser Wert mit dem Ergebnis des Aufrufs von pthread_self(3C) überein.

uint64_t timestamp

Der aktuelle Wert eines Nanosekundenzählers für Zeitmarken. Dieser zählt (wird erhöht) ab einem beliebigen Punkt in der Vergangenheit und sollte nur für relative Berechnungen eingesetzt werden. 

uid_t uid

Die reale Benutzer-ID des aktuellen Prozesses. 

uint64_t uregs[]

Die für den aktuellen Thread gespeicherten Benutzermodus-Registerwerte zum Zeitpunkt der Prüfpunktauslösung. Die Verwendung des uregs[]-Vektors wird in Kapitel 33Ablaufverfolgung von Benutzerprozessen behandelt.

uint64_t vtimestamp

Der aktuelle Wert eines Nanosekundenzählers für Zeitmarken, der auf die Ausführungsdauer des aktuellem Threads auf einer CPU minus der in DTrace-Prädikaten und -Aktionen verbrachten Zeit virtualisiert ist. Dieser zählt (wird erhöht) ab einem beliebigen Punkt in der Vergangenheit und sollte nur für relative Zeitberechnungen eingesetzt werden. 

uint64_t walltimestamp

Die seit 00.00 Uhr UCT am 1. Januar 1970 verstrichene Zeit in Nanosekunden. 

In D integrierte Funktionen wie trace() werden in Kapitel 10Aktionen und Subroutinen erläutert.