EN JA
PROFIL(2)
PROFIL(2) FreeBSD System Calls Manual PROFIL(2)

名称

profilプロセスのプロファイルを制御する

ライブラリ

Standard C Library (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 の場合、プロファイルは無効になります。

戻り値

The profil() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

関連ファイル

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

エラー

次のエラーが報告される可能性があります:
[ EFAULT]
バッファ samples に無効なアドレスが入っています。

関連項目

gprof(1)

歴史

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

バグ

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

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

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

June 4, 1993 FreeBSD