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.