profil(2) FreeBSD 一般コマンドマニュアル

profil

前のページ 上に戻る 次のページ

profil




書式

     #include <unistd.h>

     int
     profil(char *samples, size_t size, vm_offset_t offset, int scale);


解説

     profil() 関数は、現在のプロセスのカウンタプロファイルを有効化または無効化
     します。プロファイルが有効な場合、プロファイルクロックチックごとに、カー
     ネルは samples バッファ内の適切なカウントを更新します。プロファイルクロッ
     クの周波数は、プロファイル出力ファイル内のヘッダ内に記録されます。

     バッファ samples には size バイトが含まれており、一連の 16 ビットの塊に分
     割されます。各塊は、プロファイルが有効時にプロファイルクロックチックが発
     生したときに、プログラムカウンタがプロセス内の特別なアドレス範囲内にあっ
     た回数をカウントします。指定のプログラムカウンタアドレスについて、対応す
     る塊の数が次の関係によって与えられます。

           [(pc - offset) / 2] * scale / 65536

     offset パラメータは、カーネルがプログラムカウンタサンプルを取る最も低いア
     ドレスです。 scale パラメータの範囲は 1 から 65536 であり、塊の広がりを変
     更するのに使用できます。スケール 65536 は、各塊をアドレス範囲の 2 バイト
     に割り当てます。スケール 32768 は 4 バイト、 16384 は 8 バイト、後は同様
     です。中間の値はおおよそ中間の範囲を与えます。 scale 値が 0 の場合、プロ
     ファイルは無効になります。


戻り値

     関数 profil() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
     が返され、グローバル変数 errno が設定されてエラーを示します。


ファイル

     /usr/lib/gcrt0.o  プロファイリング用の C ランタイムスタートアップファイル
     gmon.out          プロファイル出力ファイルの従来の名前


エラー

     次のエラーが報告される可能性があります。

     [EFAULT]           バッファ samples に無効なアドレスが入っています。


関連項目

     gprof(1)


歴史

     profil() 関数は Version 7 AT&T UNIX で登場しました。


バグ

     このルーチンの名前は profile() にすべきです。

     samples 引数は本当はベクトル unsigned short のベクトルである必要がありま
     す。

ABELNET VPSサービス