プログラミングユーティリティ

TNF_PROBE_1TNF_PROBE_5

引数の名前に含まれている数字 1 〜 5 は、プローブポイントに指定する変数の数を表します。たとえば、TNF_PROBE_1 の構文は次のようになっています。

TNF_PROBE_1(name, keys, detail,
arg_type_1, arg_name_1, arg_value_1);

また、TNF_PROBE_5 の構文は次のようになっています。

TNF_PROBE_5(name, keys, detail,
arg_type_1, arg_name_1, arg_value_1
arg_type_2, arg_name_2, arg_value_2
arg_type_3, arg_name_3, arg_value_3
arg_type_4, arg_name_4, arg_value_4
arg_type_5, arg_name_5, arg_value_5);

以下、各引数について説明します。

表 1-9 定義済みの型

型 

対応する C 言語の型と意味 

tnf_long

int、long 

tnf_ulong

unsigned int、unsigned long 

tnf_longlong

long long (コンパイラに実装されている場合) 

tnf_ulonglong

unsigned long long (コンパイラに実装されている場合) 

tnf_float

float 

tnf_double

double 

tnf_string

char * 

tnf_opaque

void * 

たとえば、「C プログラムのサンプル」cookie.c では、以下のように TNF_PROBE_2 を使用しています。

TNF_PROBE_2(inloop, "cookie main loop","sunw%debug in the loop",
            tnf_long, loop_count,   i,
            tnf_long, total_iterations,  sum);

cookie.c のマクロ定義の一部について、表 1-10 で説明します。

表 1-10 cookie.c の TNF マクロ定義

TNF_PROBE_0 ( 

引数の型が指定されていないプローブ 

start, 

プローブの名前 

"cookie main", 

プローブが cookiemain (keys 属性の値) に属しているグループのリスト

"sunw%debug starting main"); 

ユーザー定義の属性 = sunw%debug、値 = starting main (デバッグプローブ関数で使用されます)

TNF_PROBE_2 ( 

2 つの変数を持ったプローブ 

inloop, 

プローブの名前 

"cookie main loop", 

keys - cookie、mainloop

"sunw%debug in the loop", 

デバッグプローブ関数の値 

tnf_long, 

最初の変数の型 

loop_count, 

最初の変数の名前 (slots 属性の値)

i, 

最初の変数 

tnf_long, 

2 番目の変数の型 

total_iterations, 

2 番目の変数の名前 (slots 属性の値)

sum);

2 番目の変数 

"");