Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setitimer(2) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sigvec(2)

gettimeofday(2)

GETITIMER(2)  —  NEWS-OS Programmer’s Manual

名称

getitimer, setitimer − インターバルタイマの値を取り出す/セットする

形式

#include <sys/time.h>

#define ITIMER_REAL   0/∗ real time intervals ∗/
#define ITIMER_VIRTUAL1/∗ virtual time intervals ∗/
#define ITIMER_PROF   2/∗ user and system virtual time ∗/
getitimer(which, value)
int which;
struct itimerval ∗value;

setitimer(which, value, ovalue)
int which;
struct itimerval ∗value, ∗ovalue;

解説

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

タイマの値は、 itimerval 構造体で次のように定義されています。

struct itimerval {
structtimeval it_interval;/∗ timer interval ∗/
structtimeval it_value;/∗ current value ∗/
};

it_value は、 ゼロでなければ、 次のタイマの終了までの時間を 示します。 it_interval は、 ゼロでなければ、 タイマの終了時に it_value の再ローディングで使用される値を 指定します。 it_value を ゼロにセットすると、 そのタイマは使用できなく (オフに) なります。 it_interval を ゼロにセットすると、( it_value がゼロではないとすれば) タイマの次の終了後に、 そのタイマはオフにされます。

システムクロックの分解能より小さな値は、 その分解能 (NEWS では 10 ミリ秒単位) へ切り上げられます。

ITIMER_REAL タイマは実時間内でデクリメントを 行います。 このタイマの終了時には、 SIGALRM シグナルが発せられます。

ITIMER_VIRTUAL タイマは、 プロセスの仮想時間内でデクリメントを 行います。 このタイマは、 プロセスが実行されているときだけ稼働します。 このタイマの終了時には、 SIGVTALRM シグナルが発せられます。

ITIMER_PROF タイマは、 プロセスの仮想時間内とシステムがそのプロセスのために稼働している 時間内との両方でデクリメントを行います。 このタイマは、 インタープリタが プログラムの実行の統計的なプロファイリングで使用するために設計されています。 ITIMER_PROF タイマが終了するたびに、 SIGPROF シグナルが発せられます。 このシグナルは、 進行中のシステムコールに割り込みを かけるので、 このタイマを 使用しているプログラムは、 割り込まれたシステムコールを 再スタートできるように作られていなければなりません。

注意事項

時間値を 操作するための 3 種類のマクロが <sys/time.h> 内に定義されています。 timerclear は時間値を ゼロにセットし、 timerisset は時間値がゼロ以外であるかどうかを テストし、 timercmp は 2 つの時間値を 比較 (このマクロでは >= と <= は働きません) します。

リターン値

コールが成功した場合には、 値 0 が返されます。 エラーが発生した場合には、 値 −1 が返され、 エラーコードがグローバル変数 errno に入れられます。

エラー

次のエラーが発生することがあります。

[EINVAL] which パラメタが、 ITIMER_REAL、 ITIMER_VIRTUAL、 ITIMER_PROF のうちの 1 つではなかった。

[EFAULT] value パラメタが誤ったアドレスを 指定した。

[EINVAL] value パラメタが、 長すぎて扱うことのできない時間を 指定した。

関連事項

sigvec(2), gettimeofday(2)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026