PROFIL(2) FreeBSD システムコールマニュアル PROFIL(2)
名称
profil − プロセスのプロファイルを制御する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#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
ランタイムスタートアップファイル エラー |
次のエラーが報告される可能性があります: |
[EFAULT]
バッファ samples に無効なアドレスが入っています。 関連項目 |
歴史
profil() 関数は Version 7 AT&T UNIX で登場しました。 |
バグ
このルーチンの名前は profile() にすべきです。 samples 引数は本当はベクトル unsigned short のベクトルである必要がありま す。 gmon.out ファイルの形式は記述されていません。 FreeBSD 10.0 June 4, 1993 FreeBSD 10.0 |