スポンサーリンク

GETITIMER(2) FreeBSD システムコールマニュアル GETITIMER(2)

名称

getitimer, setitimer − インターバルタイマの値を取得/設定

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/time.h>

#define ITIMER_REAL

0

#define ITIMER_VIRTUAL

1

#define ITIMER_PROF

2

int

getitimer(int which, struct itimerval *value);

int

setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);

解説

システムは、各プロセスに <sys/time.h> で定義された 3 つのインターバルタイ マを提供しています。 getitimer() システムコールは which で指定されたタイ マの現在の値を value 構造体に返します。 setitimer() システムコールはタイ マを指定の value に設定します (ovalue が nil でない場合、タイマの以前の値 が返されます)。

タイマの値は itimerval 構造体によって定義されます:

      struct itimerval {

struct

timeval it_interval;

/* タイマインターバル */

struct

timeval it_value;

/* 現在の値 */

};

it_value が 0 でない場合、それは次にタイマが時間切れになるまでの時間を示 します。 it_interval が 0 でない場合、それはタイマが時間切れになるときに it_value を再設定するのに使用される値を指定します。 it_value を 0 に設定 すると、タイマは it_interval の値に関係なく無効になります。 it_interval を 0 に設定すると、次の時間切れの後でタイマは無効になります (it_value が 0 でないと想定します)。

システムクロックの精度 (通常は 10 ミリ秒です) より小さい時間の値はこの精 度に切り上げられます。

ITIMER_REAL タイマはリアルタイムで減少していきます。このタイマが時間切れ になると SIGALRM シグナルが配信されます。

ITIMER_VIRTUAL タイマはプロセス仮想時間で減少します。このタイマが減るのは プロセスが実行中のときだけです。時間切れになるときに SIGVTALRM シグナルが 配信されます。

ITIMER_PROF タイマは、プロセス仮想時間内およびシステムがプロセスのために 処理を行っているときの両方で減少します。これは、インタプリタがプログラム の実行を統計的にプロファイルするときに使用するように設計されています。 ITIMER_PROF タイマが時間切れになるたびに SIGPROF シグナルが配信されます。 このシグナルは進行中のシステムコールに割り込むかもしれないので、このタイ マを使用しているプログラムは割り込まれたシステムコールを再実行する準備を しておかなければなりません。

setitimer() で it_intervalit_value に許容される最大秒数は 100000000 です。

時間の値を操作する 3 つのマクロは <sys/time.h> で定義されています。 timerclear() マクロは時間の値を 0 に設定し、 timerisset() は時間値が 0 で ないかどうか検査し、 timercmp() は 2 つの時間の値を比較します。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

getitimer() と setitimer() システムコールは次の場合に失敗します:

       [EFAULT]

value 引数が無効なアドレスを指定しました。

[EINVAL]
value
引数が、大きすぎて処理できない時間を指定しまし た。

関連項目

gettimeofday(2), select(2), sigvec(2), clocks(7)

歴史

getitimer() システムコールは 4.2BSD で登場しました。

FreeBSD 10.0 May 16, 1995 FreeBSD 10.0

スポンサーリンク