aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man2/getitimer.2
blob: 36f7428bd30fdeb7f3ac2e06cea3a8682c4607e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
.\" Copyright (c) 1983, 1991, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)getitimer.2	8.3 (Berkeley) 5/16/95
.\" %FreeBSD: src/lib/libc/sys/getitimer.2,v 1.10.2.2 2000/12/29 14:44:52 ru Exp %
.\"
.\" $FreeBSD$
.Dd May 16, 1995
.Dt GETITIMER 2
.Os BSD 4.2
.Sh 名称
.Nm getitimer ,
.Nm setitimer
.Nd インターバルタイマの値を取得 / 設定
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/time.h>
.Fd "#define ITIMER_REAL		0"
.Fd "#define ITIMER_VIRTUAL	1"
.Fd "#define ITIMER_PROF		2"
.Ft int
.Fn getitimer "int which" "struct itimerval *value"
.Ft int
.Fn setitimer "int which" "const struct itimerval *value" "struct itimerval *ovalue"
.Sh 解説
システムは、各プロセスに
.Ao Pa sys/time.h Ac
で定義された 3 つのインターバルタイマを提供しています。
.Fn getitimer
システムコールは
.Fa which
で指定されたタイマの現在の値を
.Fa value
構造体に返します。
.Fn setitimer
システムコールはタイマを指定の
.Fa value
に設定します
.Fa ( ovalue
が nil でない場合、タイマの
以前の値が返されます)。
.Pp
タイマの値は
.Fa itimerval
構造体によって定義されます。
.Bd -literal -offset indent
struct itimerval {
	struct	timeval it_interval;	/* タイマインターバル */
	struct	timeval it_value;	/* 現在の値 */
};
.Ed
.Pp
.Fa it_value
が 0 でない場合、それは次にタイマが時間切れになるまでの時間を示します。
.Fa it_interval
が 0 でない場合、それはタイマが時間切れになるときに
.Fa it_value
を再設定するのに
使用される値を指定します。
.Fa it_value
を 0 に設定すると、タイマは
.Fa it_interval
の値に関係なく無効になります。
.Fa it_interval
を 0 に設定すると、次の時間切れの後でタイマは無効になります
.Fa ( it_value
が 0 でないと想定します)。
.Pp
システムクロックの精度 (通常は 10 ミリ秒です) より小さい時間の値は
この精度に切り上げられます。
.Pp
.Dv ITIMER_REAL
タイマはリアルタイムで減少していきます。このタイマが時間切れになると
.Dv SIGALRM
シグナルが配信されます。
.Pp
.Dv ITIMER_VIRTUAL
タイマはプロセス仮想時間で減少します。
このタイマが減るのはプロセスが実行中の
ときだけです。時間切れになるときに
.Dv SIGVTALRM
シグナルが配信されます。
.Pp
.Dv ITIMER_PROF
タイマは、プロセス仮想時間内およびシステムがプロセスのために
処理を行っているときの両方で減少します。
これは、インタプリタがプログラムの実行を統計的にプロファイルするときに
使用するように設計されています。
.Dv ITIMER_PROF
タイマが時間切れになるたびに
.Dv SIGPROF
シグナルが配信されます。
このシグナルは進行中のシステムコールに割り込むかもしれないので、
このタイマを使用しているプログラムは割り込まれたシステムコールを
再実行する準備をしておかなければなりません。
.Pp
.Fn setitimer
で
.Fa it_interval
と
.Fa it_value
に許容される最大秒数は 100000000 です。
.Sh 注
時間の値を操作する 3 つのマクロは
.Ao Pa sys/time.h Ac
で定義されています。
.Fa timerclear
は時間の値を 0 に設定し、
.Fa timerisset
は時間値が 0 でないかどうか検査し、
.Fa timercmp
は 2 つの時間の値を比較します。
.Sh 戻り値
呼び出しが正常に完了すると値 0 が返されます。
エラーが起きた場合は値 -1 が返され、
より正確なエラーコードがグローバル変数
.Va errno
に設定されます。
.Sh エラー
.Fn getitimer
と
.Fn setitimer
は次の場合に失敗します。
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa value
パラメータが無効なアドレスを指定しました。
.It Bq Er EINVAL
.Fa value
パラメータが、大きすぎて処理できない時間を指定しました。
.El
.Sh 関連項目
.Xr gettimeofday 2 ,
.Xr select 2 ,
.Xr sigvec 2 ,
.Xr clocks 7
.Sh 歴史
.Fn getitimer
関数は
.Bx 4.2
で登場しました。