OSDN Git Service

(split) LDP: Update release pages based on LDP 3.54 release
[linuxjm/LDP_man-pages.git] / release / man2 / futex.2
index ea7060a..75176cc 100644 (file)
@@ -1,4 +1,8 @@
-.\" Page by b.hubert - may be freely modified and distributed
+.\" Page by b.hubert
+.\"
+.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE)
+.\" may be freely modified and distributed
+.\" %%%LICENSE_END
 .\"
 .\" 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 See also https://bugzilla.kernel.org/show_bug.cgi?id=14303
+.\" FIXME
+.\" See also https://bugzilla.kernel.org/show_bug.cgi?id=14303
 .\" 2.6.14 adds FUTEX_WAKE_OP
+.\"    commit 4732efbeb997189d9f9b04708dc26bf8613ed721
+.\"    Author: Jakub Jelinek <jakub@redhat.com>
+.\"    Date:   Tue Sep 6 15:16:25 2005 -0700
+.\"
+.\" FIXME
 .\" 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.
+.\"    commit c87e2837be82df479a6bae9f155c43516d2feebc
+.\"    Author: Ingo Molnar <mingo@elte.hu>
+.\"    Date:   Tue Jun 27 02:54:58 2006 -0700
+.\"
+.\"    commit e2970f2fb6950183a34e8545faa093eb49d186e1
+.\"    Author: Ingo Molnar <mingo@elte.hu>
+.\"    Date:   Tue Jun 27 02:54:47 2006 -0700
+.\"
+.\"    See Documentation/futex-requeue-pi.txt
+.\"
+.\" FIXME
 .\" 2.6.25 adds FUTEX_WAKE_BITSET, FUTEX_WAIT_BITSET
+.\"    commit cd689985cf49f6ff5c8eddc48d98b9d581d9475d
+.\"    Author: Thomas Gleixner <tglx@linutronix.de>
+.\"    Date:   Fri Feb 1 17:45:14 2008 +0100
+.\"
+.\" FIXME
+.\" 2.6.31 adds FUTEX_WAIT_REQUEUE_PI, FUTEX_CMP_REQUEUE_PI
+.\"    commit 52400ba946759af28442dee6265c5c0180ac7122
+.\"    Author: Darren Hart <dvhltc@us.ibm.com>
+.\"    Date:   Fri Apr 3 13:40:49 2009 -0700
+.\"
+.\"    commit ba9c22f2c01cf5c88beed5a6b9e07d42e10bd358
+.\"    Author: Darren Hart <dvhltc@us.ibm.com>
+.\"    Date:   Mon Apr 20 22:22:22 2009 -0700
+.\"
+.\"    See Documentation/futex-requeue-pi.txt
 .\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH FUTEX 2 2010\-08\-29 Linux "Linux Programmer's Manual"
+.\"
+.\" 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
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>, LDP v3.51
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH FUTEX 2 2013\-09\-04 Linux "Linux Programmer's Manual"
 .SH 名前
-futex \- 高速ユーザ空間ロック機構のシステムコール
+futex \- 高速ユーザ空間ロック
 .SH 書式
 .nf
 .sp
@@ -53,9 +100,13 @@ wake (起床) させる手段を提供する (プロセスが異なれば同じ
 現在のところ 5 つの操作が定義されている:
 .TP 
 \fBFUTEX_WAIT\fP
-この操作は futex アドレス \fIuaddr\fP に指定された値 \fIval\fP がまだ格納されているかどうかを不可分操作で検証し、 sleep 状態で
-この futex アドレスに対して \fBFUTEX_WAKE\fP が実行されるのを待つ。 \fItimeout\fP 引き数が NULL でない場合、その内容は
-待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 \fIuaddr2\fP と \fIval3\fP は無視される。
+This operation atomically verifies that the futex address \fIuaddr\fP still
+contains the value \fIval\fP, and sleeps awaiting \fBFUTEX_WAKE\fP on this futex
+address.  If the \fItimeout\fP argument is non\-NULL, its contents specify the
+duration of the wait.  (This interval will be rounded up to the system clock
+granularity, and kernel scheduling delays mean that the blocking interval
+may overrun by a small amount.)  If \fItimeout\fP is NULL, the call blocks
+indefinitely.  The arguments \fIuaddr2\fP and \fIval3\fP are ignored.
 
 \fBfutex\fP(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の値 (競合を表す) になった場合に実行され、
 別のプロセスがその futex を解放し \fBFUTEX_WAKE\fP の操作を実行するまで sleep する。
@@ -89,12 +140,11 @@ wake させる。 引き数 \fItimeout\fP, \fIuaddr2\fP, \fIval3\fP は無視さ
 保持されていない場合、操作はエラー \fBEAGAIN\fP で失敗する。引き数 \fItimeout\fP は無視される。
 .SH 返り値
 .PP
-どの操作が実行されたかによって、 成功時の返り値の意味が変わる。
+エラーの場合、全ての操作で \-1 が返り、 \fIerrno\fP
+がエラーの内容を示す値に設定される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りである。
 .TP 
 \fBFUTEX_WAIT\fP
-プロセスが \fBFUTEX_WAKE\fP の呼び出しで wake すると 0 を返す。 タイムアウトの場合、操作はエラー \fBETIMEOUT\fP
-で失敗する。 futex が指定された値と等しくない場合、 エラー \fBEWOULDBLOCK\fP で失敗する。 シグナルを受信するか
-(\fBsignal\fP(7)  参照) 他の偽の wake があった場合には、エラー \fBEINTR\fP で失敗する。
+そのプロセスが \fBFUTEX_WAKE\fP により wake された場合 0 を返す。発生する可能性があるエラーについては「エラー」の節を参照。
 .TP 
 \fBFUTEX_WAKE\fP
 wake したプロセスの数を返す。
@@ -107,28 +157,35 @@ wake したプロセスの数を返す。
 .TP 
 \fBFUTEX_CMP_REQUEUE\fP
 wake したプロセスの数を返す。
-.PP
-エラーの場合、全ての操作で \-1 が返り、 \fIerrno\fP がエラーの内容を示す値に設定される。
 .SH エラー
 .TP 
 \fBEACCES\fP
 futex メモリに読み込みアクセス権がなかった。
 .TP 
 \fBEAGAIN\fP
-\fBFUTEX_CMP_REQUEUE\fP で予期しない futex 値が見つかった (これは競合を示しているかもしれない。 この場合は安全な
-\fBFUTEX_WAKE\fP を使うこと)。
+\fBFUTEX_CMP_REQUEUE\fP で、\fIuaddr\fP が指す値が期待値 \fIval3\fP と異なる状況が検出された。
+(これは競合を示しているかもしれない。この場合は安全な \fBFUTEX_WAKE\fP を使うこと。)
 .TP 
 \fBEFAULT\fP
 ユーザ空間から \fItimeout\fP の情報を取得する際にエラーが発生した。
 .TP 
+\fBEINTR\fP
+\fBFUTEX_WAIT\fP 操作がシグナル (\fBsignal\fP(7) 参照) もしくは偽の wakeup により中断された。
+.TP 
 \fBEINVAL\fP
-操作が定義されていない。またはページ・アラインメントでエラーが発生した
+無効な引き数
 .TP 
 \fBENFILE\fP
 オープンされているファイルの総数がシステムの制限に達した。
 .TP 
 \fBENOSYS\fP
 \fIop\fP に無効な操作が指定された。
+.TP 
+\fBETIMEDOUT\fP
+\fBFUTEX_WAIT\fP 操作でタイムアウトが発生した。
+.TP 
+\fBEWOULDBLOCK\fP
+\fIop\fP が \fBFUTEX_WAIT\fP で、その呼び出しにおいて \fIuaddr\fP が指す値が期待値 \fIval\fP と異なっていた。
 .SH バージョン
 .PP
 最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異なる。 4
@@ -149,13 +206,19 @@ futex メモリに読み込みアクセス権がなかった。
 にはこのシステムコールに対するラッパー関数はない)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライブラリの
 ソースを読み終えていることが要求される。
 .SH 関連項目
-\fBfutex\fP(7)
+\fBrestart_syscall\fP(2), \fBfutex\fP(7)
 .PP
 \fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP (proceedings
 of the Ottawa Linux Symposium 2002), online at
 .br
-http://kernel.org/doc/ols/2002/ols2002\-pages\-479\-495.pdf
+.UR http://kernel.org\:/doc\:/ols\:/2002\:/ols2002\-pages\-479\-495.pdf
+.UE
 .PP
 futex の使用例ライブラリ, futex\-*.tar.bz2
 .br
-ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/.
+.UR ftp://ftp.nl.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/
+.UE
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。