以下の表に、D の組み込み変数を一覧します。これらの変数は、すべてスカラー大域変数です。現在、D では、スレッド固有変数、節固有変数、および組み込みの連想配列は定義されていません。
表 3–1 DTrace の組み込み変数
型と名前 |
説明 |
---|---|
int64_t arg0、...、arg9 |
プローブに渡される最初の 10 個の入力引数は、生の 64 ビット整数として表現されます。プローブに渡された引数の数が 10 個未満の場合、残りの変数はゼロを返します。 |
args[] |
現在のプローブに渡される型付き引数です (存在する場合)。args[] 配列へのアクセスには整数インデックスが使用されますが、各要素には、指定のプローブ引数に対応する型が定義されます。たとえば、read(2) システムコールプローブで args[] を参照する場合、args[0] の型は int、args[1] の型は void *、args[2] の型は size_t になります。 |
uintptr_t caller |
現在のプローブを入力する直前の、現在のスレッドのプログラムカウンタの場所を示します。 |
chipid_t chip |
現在の物理チップの CPU チップ識別子です。詳細は、第 26 章sched プロバイダを参照してください。 |
processorid_t cpu |
現在の CPU の CPU 識別子です。詳細は、第 26 章sched プロバイダを参照してください。 |
cpuinfo_t *curcpu |
現在の CPU の CPU 情報です。詳細は、第 26 章sched プロバイダを参照してください。 |
lwpsinfo_t *curlwpsinfo |
現在のスレッドに関連付けられている軽量プロセス (LWP) の LWP 状態です。この構造の詳細は、proc(4) のマニュアルページに記載されています。 |
psinfo_t *curpsinfo |
現在のスレッドに関連付けられているプロセスのプロセス状態です。この構造の詳細は、proc(4) のマニュアルページに記載されています。 |
kthread_t *curthread |
現在のスレッドのオペレーティングシステムカーネルの内部データ構造 kthread_t のアドレスです。kthread_t は <sys/thread.h> に定義されています。この変数とその他のオペレーティングシステムデータ構造の詳細は、『SOLARIS インターナル — カーネル構造のすべて』を参照してください。 |
string cwd |
現在のスレッドに関連付けられているプロセスの現在の作業ディレクトリ名です。 |
uint_t epid |
現在のプローブの有効なプローブ ID (EPID) です。この整数は、特定の述語と一連のアクションによって有効化された特定のプローブを一意に識別します。 |
int errno |
このスレッドによって直前に実行されたシステムコールから返されるエラー値です。 |
string execname |
現在のプロセスを実行するため、exec(2) に渡された名前です。 |
gid_t gid |
現在のプロセスの実グループ ID です。 |
uint_t id |
現在のプローブのプローブ ID です。この ID は、DTrace によって発行された、システム内のプローブを一意に識別する識別子です。この ID を確認するには、dtrace -l を実行します。 |
uint_t ipl |
現在の CPU でのプローブ起動時の割り込み優先レベル (IPL) を表します。Solaris オペレーティングシステムカーネルでの割り込みレベルと割り込み処理の詳細は、『SOLARIS インターナル — カーネル構造のすべて』を参照してください。 |
lgrp_id_t lgrp |
現在の CPU をメンバーに持つ応答時間グループの応答時間グループ ID です。詳細は、第 26 章sched プロバイダを参照してください。 |
pid_t pid |
現在のプロセスのプロセス ID です。 |
pid_t ppid |
現在のプロセスの親プロセスのプロセス ID です。 |
string probefunc |
現在のプローブの記述に含まれる関数名の部分です。 |
string probemod |
現在のプローブの記述に含まれるモジュール名の部分です。 |
string probename |
現在のプローブの記述に含まれる名前の部分です。 |
string probeprov |
現在のプローブの記述に含まれるプロバイダ名の部分です。 |
psetid_t pset |
現在の CPU が含まれているプロセッサセットのプロセッサセット ID です。詳細は、第 26 章sched プロバイダを参照してください。 |
string root |
現在のスレッドに関連付けられているプロセスのルートディレクトリ名です。 |
uint_t stackdepth |
現在のスレッドのプローブ起動時のスタックフレームの深さを表します。 |
id_t tid |
現在のスレッドのスレッド ID です。スレッドがユーザープロセスに関連付けられている場合、この値は、pthread_self(3C) の呼び出し結果と同じになります。 |
uint64_t timestamp |
ナノ秒タイムスタンプカウンタの現在の値です。このカウンタの値は、過去の任意の時点から増分しています。そのため、このカウンタは、相対計算専用です。 |
uid_t uid |
現在のプロセスの実ユーザー ID です。 |
uint64_t uregs[] |
現在のスレッドの、プローブ起動時のユーザーモード登録値 (保存済み) です。uregs[] 配列の使用方法については、第 33 章ユーザープロセスのトレースを参照してください。 |
uint64_t vtimestamp |
ナノ秒タイムスタンプカウンタの現在の値です。CPU 上で現在のスレッドの実行が開始されてから現在までの経過時間から、DTrace の述語およびアクションで使用された時間を減じた値になります。このカウンタの値は、過去の任意の時点から増分しています。そのため、このカウンタは、相対時間計算専用です。 |
uint64_t walltimestamp |
1970 年 1 月 1 日の協定世界時 00:00 から現在までの経過時間をナノ秒単位で示します。 |
trace() をはじめとする D 言語の組み込み関数については、第 10 章アクションとサブルーチンで説明します。