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
|
.\" Page by b.hubert - may be freely modified and distributed
.\"
.\" Niki A. Rahimi (LTC Security Development, narahimi@us.ibm.com)
.\" added ERRORS section.
.\"
.\" Japanese Version Copyright(C) 2003 Suzuki Takashi
.\" all rights reserved.
.\" Translated Fri Oct 24 10:37:10 JST 2003
.\" by Suzuki Takashi.
.\"
.\"WORD: integer int ѿ
.\"WORD: sleep Ԥ
.\"WORD: wake
.\"WORD: wake up
.\"
.TH "FUTEX" "2" "31 December 2002" "" ""
.SH "̾"
futex \- ®桼֥åΥƥॳ
.SH ""
.sp
.B "#include <linux/futex.h>"
.sp
.B "#include <sys/time.h>"
.sp
.BI "int sys_futex (void *" futex ", int " op ", int " val ", const struct timespec *" timeout );
.SH ""
.PP
\fBsys_futex\fR ƥॳϡ
ꤷɥ쥹ͤѹΤץबԤļʤ
Υɥ쥹ФԵΥץ wake () ʤ
(ץۤʤƱФ륢ɥ쥹ƱǤϤʤ⤷ʤ
ͥϰۤʤ֤˥ޥåפ줿Ʊ \fBsys_futex\fR
Ȥ褦ǥޥåפ)
ŵŪˤϡ futex \fBfutex\fR(4) ˵Ƥ褦ˡ
ͭΥå礹νΤѤ롣
.PP
\fBfutex\fr(4) 桼֤Ƕʤλʤä硢
ͥۤ뤿˥ƥॳƤɬפ롣
ۤȤΤϡƤӽФץ sleep (Ԥ) ꡢȿФ
Ԥץ wake ꤹ뤳Ȥ̣롣
.PP
δؿƤӽФץ
\fBfutex\fR(4) ˵ҤƤ륻ޥƥ¤Ǥ뤳Ȥᤵ롣
ΥޥƥˤϰܿԲǽʥ֥̿Ȥޤޤ롣
ΤȤϸ futex Υ桼ΤۤȤɤϼºݤϥ饤֥κԤǤꡢ
̥ץꥱγȯԤǤϤʤȤȤǤ롣
.PP
\fIfutex\fR ϡǼ롢
饤Ȥ·ä int ѿؤƤɬפ롣
¹Ԥ \fIop\fR ѥ𤷤ơ \fIval\fR ȤȤϤ롣
.PP
ߤΤȤ 3 ĤƤ:
.TP
\fBFUTEX_WAIT\fR
futex ɥ쥹˻ꤵ줿ͤޤ
ǼƤ뤫ɤԲʬǸڤ
sleep ֤
futex ɥ쥹Ф \fIFUTEX_WAKE\fR ¹ԤΤԤġ
\fItimeout\fR NULL Ǥʤ硢Ƥ
Ԥ֤κͤɽ NULL ξ̵ɽ
\fBfutex\fR(4) ˾Ȥ餷碌ȡθƤӽФ
ȤΥǥȤ (ɽ) ˤʤä˼¹Ԥ졢
̤Υץ futex \fIFUTEX_WAKE\fR ¹Ԥޤ
sleep 롣
.TP
\fBFUTEX_WAKE\fR
Ǥϻꤷ futex ɥ쥹ФԤ֤
(ʤ \fIFUTEX_WAIT\fR ) \fIval\fR ĤΥץ wake 롣
\fBfutex\fR(4) ˾Ȥ餷碌ȡ
ȤΥȤԤץȽ
futex ͤ 1 ꤵ줿 (ѲǽǤ뤳Ȥɽ) ˼¹Ԥ롣
.TP
\fBFUTEX_FD\fR
Ʊ wake б뤿ᡢϥեǥץ futex
ϢŤ롣̤Υץ \fIFUTEX_WAKE\fR ¹Ԥȡ
ץ \fIval\fR Ϥ줿ʥֹΥʥ롣
ƤӽФץϻѸ塢֤줿եǥץ
ʤФʤʤ
֤ɻߤ뤿ᡢƤӽФץ \fIFUTEX_FD\fR ֤ä
futex up 줿ɤǧʤФʤʤ
.SH "֤"
.PP
ɤ¹Ԥ줿ˤäơ֤ͤϰۤʤ̣ġ
.TP
\fBFUTEX_WAIT\fR
ץ \fIFUTEX_WAKE\fR θƤӽФ wake 0 ֤
ॢȤξ硢 ETIMEOUT ֤롣
futex ꤵ줿ͤʤ硢 EWOULDBLOCK ֤롣
ʥ (ޤ¾ε wake ˤä) EINTR ֤
.TP
\fBFUTEX_WAKE\fR
wake ץο֤
.TP
\fBFUTEX_FD\fR
futex ˴ϢŤ줿ʥեǥץ֤
.SH "顼"
.TP
.B EFAULT
桼֤
.I timeout
ξݤ˥顼ȯ
.TP
.B EINVAL
Ƥʤޤϥڡ饤Ȥǥ顼ȯ
.SH ""
.PP
֤ futex ϥɥ桼ưפ˻ȤȤΤǤ복ǰȤ
տޤ줿ΤǤϤʤ
Ԥϡ֥˴Ƥꡢʲ˵ 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 С
.PP
ǽ futex б Linux 2.5.7 Ȥ߹ޤ줿
嵭ΥޥƥȤϰۤʤ롣
ߤΥޥƥ Linux 2.5.40 ʹߤѲǽǤ롣
.SH "Ϣ"
.PP
\fBfutex\fR(4)
`Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux'
(proceedings of the Ottawa Linux Symposium 2002)
futex λ饤֥ꡢ futex-*.tar.bz2
<URL:ftp://ftp.kernel.org:/pub/linux/kernel/people/rusty/>
|