スポンサーリンク

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 ランタイムスタートアップファイル
gmon.out
プロファイル出力ファイルの従来の名前

エラー

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

       [EFAULT]

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

関連項目

gprof(1)

歴史

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

バグ

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

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

gmon.out ファイルの形式は記述されていません。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク