File: futex.2

package info (click to toggle)
manpages-ja 0.5.0.0.20100315-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 21,156 kB
  • ctags: 1
  • sloc: sh: 13,935; perl: 157; makefile: 114
file content (282 lines) | stat: -rw-r--r-- 7,522 bytes parent folder | download
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
.\" Page by b.hubert - may be freely modified and distributed
.\"
.\" Niki A. Rahimi (LTC Security Development, narahimi@us.ibm.com)
.\" added ERRORS section.
.\"
.\" Modified 2004-06-17 mtk
.\" Modified 2004-10-07 aeb, added FUTEX_REQUEUE, FUTEX_CMP_REQUEUE
.\"
.\" FIXME
.\" 2.6.14 adds FUTEX_WAKE_OP
.\" 2.6.18 adds (Ingo Molnar) priority inheritance support:
.\" FUTEX_LOCK_PI, FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI.  These need
.\" to be documented in the manual page.  Probably there is sufficient
.\" material in the kernel source file Documentation/pi-futex.txt.
.\" 2.6.25 adds FUTEX_WAKE_BITSET, FUTEX_WAIT_BITSET
.\"
.\" Japanese Version Copyright(C) 2003 Suzuki Takashi
.\"         all rights reserved.
.\" Translated Fri Oct 24 10:37:10 JST 2003
.\"         by Suzuki Takashi.
.\" Updated & Modified Sat Feb  5 14:28:53 JST 2005
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>, LDP v2.01
.\" Updated & Modified Wed Jan  3 04:51:22 JST 2007 by Yuichi SATO, LDP v2.43
.\"
.\"WORD: integer                int ѿ
.\"WORD: sleep                  Ԥ
.\"WORD: wake                   
.\"WORD: wake up                
.\"
.TH FUTEX 2 2008-11-27 "Linux" "Linux Programmer's Manual"
.SH ̾
futex \- ®桼֥åΥƥॳ
.SH 
.nf
.sp
.B "#include <linux/futex.h>"
.B "#include <sys/time.h>"
.sp
.BI "int futex(int *" uaddr ", int " op ", int " val \
", const struct timespec *" timeout ,
.br
.BI "          int *" uaddr2 ", int " val3 );
.\" int *? void *? u32 *?
.fi
.SH 
.PP
.BR futex ()
ƥॳϡ
ꤷɥ쥹ͤѹΤץबԤļʤ
Υɥ쥹ФԵΥץ wake () ʤ󶡤
(ץۤʤƱФ륢ɥ쥹ƱǤϤʤ⤷ʤ
ͥϰۤʤ֤˥ޥåפ줿Ʊ
.BR futex ()
ǻȤ褦ǥޥåפ)
ŵŪˤϡfutex 
.BR futex (7)
˵Ƥ褦ˡ
ͭΥå礹νΤѤ롣
.PP
.BR futex (7)
桼֤Ƕʤλʤä硢
ͥۤ뤿˥ƥॳƤɬפ롣
ۤȤΤϡƤӽФץ sleep (Ԥ) ꡢȿФ
Ԥץ wake ꤹ뤳Ȥ̣롣
.PP
δؿƤӽФץ
.BR futex (7)
˵ҤƤ륻ޥƥ¤Ǥ뤳Ȥ׵ᤵ롣
ΥޥƥˤϰܿԲǽʥ֥̿񤯤Ȥޤޤ롣
ΤȤϸ futex Υ桼ΤۤȤɤϼºݤϥ饤֥κԤǤꡢ
̥ץꥱγȯԤǤϤʤȤȤǤ롣
.PP
.I uaddr
ϡ󥿤Ǽ롢
饤Ȥ·ä int ѿؤƤɬפ롣
¹Ԥ
.I op
𤷤ơ
.I val
ȤȤϤ롣
.PP
ߤΤȤ 5 ĤƤ:
.TP
.B FUTEX_WAIT
 futex ɥ쥹
.I uaddr
˻ꤵ줿
.I val
ޤǼƤ뤫ɤԲʬǸڤ
sleep ֤
 futex ɥ쥹Ф
.B FUTEX_WAKE
¹ԤΤԤġ
.I timeout
 NULL Ǥʤ硢Ƥ
Ԥ֤κͤɽNULL ξ̵ɽ

.I uaddr2

.I val3
̵뤵롣

.BR futex (7)
˾Ȥ餷碌ȡθƤӽФ
ȤΥǥȤ (ɽ) ˤʤä˼¹Ԥ졢
̤Υץ futex 
.B FUTEX_WAKE
¹Ԥޤ sleep 롣
.TP
.B FUTEX_WAKE
Ǥϻꤷ futex ɥ쥹ФԤ֤
.B FUTEX_WAIT
)  \fIval\fP ĤΥץ wake 롣

.IR timeout ,
.IR uaddr2 ,
.I val3
̵뤵롣

\fBfutex\fR(4) ˾Ȥ餷碌ȡ

ȤΥ󥯥ȤԤץȽ
futex ͤ 1 ꤵ줿 (ѲǽǤ뤳Ȥɽ) ˼¹Ԥ롣
.TP
.BR FUTEX_FD " (Linux 2.6.25 )"
Ʊ wake б뤿ᡢϥեǥץ futex 
ϢŤ롣
.\" .BR poll (2)
.\" ŬƤ롣
̤Υץ
.B FUTEX_WAKE
¹Ԥȡץ
.I val
Ϥ줿ʥֹΥʥ롣
ƤӽФץϻѸ塢֤줿եǥץ
ʤФʤʤ

.IR timeout ,
.IR uaddr2 ,
.I val3
̵뤵롣

֤ɻߤ뤿ᡢƤӽФץ
.B FUTEX_FD
֤ä
futex  up 줿ɤǧʤФʤʤ

.\" FIXME . Check that this flag does eventually get removed.
.B FUTEX_FD
ϤȤȶ礬䤹äᡢ
Linux 2.6.26 ʹߤǺƤ롣
.TP
.BR FUTEX_REQUEUE " (Linux 2.5.70 ʹ)"
ϡ
.B FUTEX_WAKE
ȤƤơ wake ƤƤΥץ
¾ futex ɬפˡ
ֽäη˽ (thundering herd)׸̤򤱤뤿Ƴ줿
θƤӽФ
.I val
ĤΥץ wake ɥ쥹
.I uaddr2
 futex ԤäƤ¾ƤΥץ٥塼ˤ롣

.I timeout

.I val3
̵뤵롣
.TP
.BR FUTEX_CMP_REQUEUE " (Linux 2.6.7 ʹ)"
ΰդ
.B FUTEX_REQUEUE
Ȥ˶礬뤿ᡢ
.B FUTEX_CMP_REQUEUE
Ƴ줿
.B FUTEX_REQUEUE
ȻƤ뤬
.I uaddr

.I val3
ޤݻƤ뤫ǽ˥å롣
ݻƤʤ硢ϥ顼
.B EAGAIN
ǼԤ롣
.I timeout
̵뤵롣
.SH ֤
.PP
ɤ¹Ԥ줿ˤäơ
֤ͤΰ̣Ѥ롣
.TP
.B FUTEX_WAIT
ץ
.B FUTEX_WAKE
θƤӽФ wake  0 ֤
ॢȤξ硢ϥ顼
.B ETIMEOUT
ǼԤ롣
futex ꤵ줿ͤʤ硢
.B EWOULDBLOCK
ǼԤ롣
ʥ뤫
.RB ( signal (7)
) ¾ε wake äˤϡ顼
.B EINTR
ǼԤ롣
.TP
.B FUTEX_WAKE
wake ץο֤
.TP
.B FUTEX_FD
futex ˴ϢŤ줿ʥեǥץ֤
.TP
.B FUTEX_REQUEUE
wake ץο֤
.TP
.B FUTEX_CMP_REQUEUE
wake ץο֤
.PP
顼ξ硢Ƥ \-1 ֤ꡢ
.I errno
顼Ƥ򼨤ͤꤵ롣
.SH 顼
.TP
.B EACCES
futex ɤ߹ߥʤä
.TP
.B EAGAIN
.B FUTEX_CMP_REQUEUE
ͽʤ futex ͤĤä
(϶򼨤Ƥ뤫⤷ʤ
ξϰ
.B FUTEX_WAKE
Ȥ)
.TP
.B EFAULT
桼֤
.I timeout
ξݤ˥顼ȯ
.TP
.B EINVAL
Ƥʤޤϥڡ饤Ȥǥ顼ȯ
.TP
.B ENFILE
ץ󤵤Ƥեƥ¤ã
.TP
.B ENOSYS
.I op
̵ꤵ줿
.SH С
.PP
ǽ futex б Linux 2.5.7 Ȥ߹ޤ줿
嵭ΥޥƥȤϰۤʤ롣
ǼƤ륻ޥƥ
4 ĤΰΥƥॳϡLinux 2.5.40 Ƴ줿
Linux 2.5.70 Ǥ 1 Ĥΰɲä줿
Linux 2.6.7 Ǥ 6 ܤΰɲä줿
ϱs390 ƥ̤ΤΤǤ롣
.SH 
Υƥॳ Linux ȼǤ롣
.SH 
.PP
֤ futex ϥɥ桼ưפ˻ȤȤΤǤ복ǰȤ
տޤ줿ΤǤϤʤ
(glibc ˤϤΥƥॳФåѡؿϤʤ)
Ԥϡ֥˴Ƥꡢʲ˵󤲤 futex 桼֥饤֥
ɤ߽Ƥ뤳Ȥ׵ᤵ롣
.\" .SH 
.\" .PP
.\" futex  Hubertus Franke (IBM Thomas J. Watson Research Center),
.\" Matthew Kirkwood, Ingo Molnar (Red Hat),
.\" Rusty Russell (IBM Linux Technology Center) ߷פ
.\" Υڡ bert hubert 
.SH Ϣ
.BR futex (7)
.PP
\fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP
(proceedings of the Ottawa Linux Symposium 2002),
futex λ饤֥, futex-*.tar.bz2
<URL:ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/>.