OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man2 / futex.2
index 6341794..a0ad013 100644 (file)
 .\"         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                µ¯¾²¤¹¤ë
+.\"WORD: integer                int 型変数
+.\"WORD: sleep                  起床待ちする
+.\"WORD: wake                   起床する
+.\"WORD: wake up                起床する
 .\"
 .TH FUTEX 2 2010-08-29 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-futex \- ¹â®¥æ¡¼¥¶¶õ´Ö¥í¥Ã¥¯µ¡¹½¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë
-.SH ½ñ¼°
+.SH 名前
+futex \- 高速ユーザ空間ロック機構のシステムコール
+.SH 書式
 .nf
 .sp
 .B "#include <linux/futex.h>"
@@ -42,238 +42,238 @@ futex \- 
 .BI "          int *" uaddr2 ", int " val3 );
 .\" int *? void *? u32 *?
 .fi
-.SH ÀâÌÀ
+.SH 説明
 .PP
 .BR futex ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢
-»ØÄꤷ¤¿¥¢¥É¥ì¥¹¤ÎÃͤ¬Êѹ¹¤µ¤ì¤ë¤Î¤ò¥×¥í¥°¥é¥à¤¬ÂԤļêÃʤä
-ÆÃÄê¤Î¥¢¥É¥ì¥¹¤ËÂФ·¤ÆÂÔµ¡Ãæ¤Î¥×¥í¥»¥¹¤ò wake (µ¯¾²) ¤µ¤»¤ë¼êÃʤòÄ󶡤¹¤ë
-(¥×¥í¥»¥¹¤¬°Û¤Ê¤ì¤ÐƱ¤¸¥á¥â¥ê¤ËÂФ¹¤ë¥¢¥É¥ì¥¹¤âƱ¤¸¤Ç¤Ï¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢
-¥«¡¼¥Í¥ë¤Ï°Û¤Ê¤ë°ÌÃ֤˥ޥåפµ¤ì¤¿Æ±¤¸¥á¥â¥ê¤ò
+システムコールは、
+指定したアドレスの値が変更されるのをプログラムが待つ手段や
+特定のアドレスに対して待機中のプロセスを wake (起床) させる手段を提供する
+(プロセスが異なれば同じメモリに対するアドレスも同じではないかもしれないが、
+カーネルは異なる位置にマップされた同じメモリを
 .BR futex ()
-¤Ç»È¤¨¤ë¤è¤¦ÆâÉô¤Ç¥Þ¥Ã¥×¤¹¤ë)¡£
-Ä̾ï¤Ï¡¢¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
+で使えるよう内部でマップする)。
+通常は、このシステムコールは
 .BR futex (7)
-¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢
-¶¦Í­¥á¥â¥êÃæ¤Î¥í¥Ã¥¯¤¬¶¥¹ç¤¹¤ë¾ì¹ç¤Î½èÍý¤ò¼ÂÁõ¤¹¤ë¤Î¤ËÍѤ¤¤é¤ì¤ë¡£
+に書かれているように、
+共有メモリ中のロックが競合する場合の処理を実装するのに用いられる。
 .PP
 .BR futex (7)
-¤ÎÁàºî¤¬¥æ¡¼¥¶¶õ´Ö¤Ç¶¥¹ç¤Ê¤¯´°Î»¤·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
-¥«¡¼¥Í¥ë¤ËÃçºÛ¤µ¤»¤ë¤¿¤á¤Ë¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤ÖɬÍפ¬¤¢¤ë¡£
-ÃçºÛ¤È¤¤¤¦¤Î¤Ï¡¢¸Æ¤Ó½Ð¤·¥×¥í¥»¥¹¤ò sleep (µ¯¾²ÂÔ¤Á) ¤µ¤»¤¿¤ê¡¢È¿ÂФË
-ÂÔ¤Á¥×¥í¥»¥¹¤ò wake ¤µ¤»¤¿¤ê¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
+の操作がユーザ空間で競合なく完了しなかった場合、
+カーネルに仲裁させるためにシステムコールを呼ぶ必要がある。
+仲裁というのは、呼び出しプロセスを sleep (起床待ち) させたり、反対に
+待ちプロセスを wake させたりすることを意味する。
 .PP
-¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¥×¥í¥»¥¹¤Ï
+この関数を呼び出すプロセスは
 .BR futex (7)
-¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ËÃé¼Â¤Ç¤¢¤ë¤³¤È¤¬Í׵ᤵ¤ì¤ë¡£
-¤³¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ë¤Ï°Ü¿¢ÉÔ²Äǽ¤Ê¥¢¥»¥ó¥Ö¥êÌ¿Îá¤ò½ñ¤¯¤³¤È¤¬´Þ¤Þ¤ì¤ë¡£
-¤³¤Î¤³¤È¤Ï¸À¤¤´¹¤¨¤ë¤È futex ¤Î¥æ¡¼¥¶¤Î¤Û¤È¤ó¤É¤Ï¼ÂºÝ¤Ï¥é¥¤¥Ö¥é¥ê¤Îºî¼Ô¤Ç¤¢¤ê¡¢
-°ìÈÌ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î³«È¯¼Ô¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£
+に記述されているセマンティクスに忠実であることが要求される。
+このセマンティクスには移植不可能なアセンブリ命令を書くことが含まれる。
+このことは言い換えると futex のユーザのほとんどは実際はライブラリの作者であり、
+一般アプリケーションの開発者ではないということである。
 .PP
 .I uaddr
-°ú¤­¿ô¤Ï¡¢¥«¥¦¥ó¥¿¤ò³ÊǼ¤¹¤ë¡¢
-¥¢¥é¥¤¥ó¥á¥ó¥È¤Î·¤Ã¤¿ int ·¿ÊÑ¿ô¤ò»Ø¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ë¡£
-¼Â¹Ô¤¹¤ëÁàºî¤Ï
+引き数は、カウンタを格納する、
+アラインメントの揃った int 型変数を指している必要がある。
+実行する操作は
 .I op
-°ú¤­¿ô¤ò²ð¤·¤Æ¡¢ÃÍ
+引き数を介して、値
 .I val
-¤È¤È¤â¤ËÅϤµ¤ì¤ë¡£
+とともに渡される。
 .PP
-¸½ºß¤Î¤È¤³¤í 5 ¤Ä¤ÎÁàºî¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
+現在のところ 5 つの操作が定義されている:
 .TP
 .B FUTEX_WAIT
-¤³¤ÎÁàºî¤Ï futex ¥¢¥É¥ì¥¹
+ã\81\93ã\81®æ\93\8dä½\9cã\81¯ futex ã\82¢ã\83\89ã\83¬ã\82¹
 .I uaddr
-¤Ë»ØÄꤵ¤ì¤¿ÃÍ
+に指定された値
 .I val
-¤¬¤Þ¤À³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÉÔ²ÄʬÁàºî¤Ç¸¡¾Ú¤·¡¢
-sleep ¾õÂÖ¤Ç
-¤³¤Î futex ¥¢¥É¥ì¥¹¤ËÂФ·¤Æ
+がまだ格納されているかどうかを不可分操作で検証し、
+sleep 状態で
+この futex アドレスに対して
 .B FUTEX_WAKE
-¤¬¼Â¹Ô¤µ¤ì¤ë¤Î¤òÂԤġ£
+が実行されるのを待つ。
 .I timeout
-°ú¤­¿ô¤¬ NULL ¤Ç¤Ê¤¤¾ì¹ç¡¢¤½¤ÎÆâÍƤÏ
-ÂÔ¤Á»þ´Ö¤ÎºÇÂçÃͤòɽ¤¹¡£NULL ¤Î¾ì¹ç¤Ï̵¸ÂÂç¤òɽ¤¹¡£
-°ú¤­¿ô
+引き数が NULL でない場合、その内容は
+待ち時間の最大値を表す。NULL の場合は無限大を表す。
+引き数
 .I uaddr2
-¤È
+と
 .I val3
-¤Ï̵»ë¤µ¤ì¤ë¡£
+は無視される。
 
 .BR futex (7)
-¤Ë¾È¤é¤·¹ç¤ï¤»¤ë¤È¡¢¤³¤Î¸Æ¤Ó½Ð¤·¤Ï
-¥«¥¦¥ó¥È¤Î¥Ç¥¯¥ê¥á¥ó¥È¤ÇÉé¤ÎÃÍ (¶¥¹ç¤òɽ¤¹) ¤Ë¤Ê¤Ã¤¿¾ì¹ç¤Ë¼Â¹Ô¤µ¤ì¡¢
-ÊÌ¤Î¥×¥í¥»¥¹¤¬¤½¤Î futex ¤ò²òÊü¤·
+に照らし合わせると、この呼び出しは
+カウントのデクリメントで負の値 (競合を表す) になった場合に実行され、
+別のプロセスがその futex を解放し
 .B FUTEX_WAKE
-¤ÎÁàºî¤ò¼Â¹Ô¤¹¤ë¤Þ¤Ç sleep ¤¹¤ë¡£
+の操作を実行するまで sleep する。
 .TP
 .B FUTEX_WAKE
-¤³¤ÎÁàºî¤Ç¤Ï»ØÄꤷ¤¿ futex ¥¢¥É¥ì¥¹¤ËÂФ·¤ÆÂÔ¤Á¾õÂÖ¤Î
-(¤¹¤Ê¤ï¤Á
+この操作では指定した futex アドレスに対して待ち状態の
+(すなわち
 .B FUTEX_WAIT
-Ãæ¤Î) ºÇÂç \fIval\fP ¸Ä¤Î¥×¥í¥»¥¹¤ò wake ¤µ¤»¤ë¡£
-°ú¤­¿ô
+中の) 最大 \fIval\fP 個のプロセスを wake させる。
+引き数
 .IR timeout ,
 .IR uaddr2 ,
 .I val3
-¤Ï̵»ë¤µ¤ì¤ë¡£
+は無視される。
 
-\fBfutex\fR(4) ¤Ë¾È¤é¤·¹ç¤ï¤»¤ë¤È¡¢
-¤³¤ÎÁàºî¤Ï
-¥«¥¦¥ó¥È¤Î¥¤¥ó¥¯¥ê¥á¥ó¥È¤ÇÂÔ¤Á¥×¥í¥»¥¹¤¬¤¢¤ë¤ÈȽÌÀ¤·¡¢
-futex Ãͤ¬ 1 ¤ËÀßÄꤵ¤ì¤¿ (ÍøÍѲÄǽ¤Ç¤¢¤ë¤³¤È¤òɽ¤¹) ¾ì¹ç¤Ë¼Â¹Ô¤µ¤ì¤ë¡£
+\fBfutex\fR(4) に照らし合わせると、
+この操作は
+カウントのインクリメントで待ちプロセスがあると判明し、
+futex 値が 1 に設定された (利用可能であることを表す) 場合に実行される。
 .TP
-.BR FUTEX_FD " (Linux 2.6.25 °ÊÁ°)"
-ÈóƱ´ü¤Î wake ¤ËÂбþ¤¹¤ë¤¿¤á¡¢¤³¤ÎÁàºî¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò futex ¤Ë
-´ØÏ¢¤Å¤±¤ë¡£
+.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 ¤µ¤ì¤¿¤«¤É¤¦¤«¤ò³Îǧ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+が返ったあと
+futex が up されたかどうかを確認しなければならない。
 
 .\" FIXME . Check that this flag does eventually get removed.
 .B FUTEX_FD
-¤Ï¤â¤È¤â¤È¶¥¹ç¤¬µ¯¤­¤ä¤¹¤«¤Ã¤¿¤¿¤á¡¢
-Linux 2.6.26 °Ê¹ß¤Çºï½ü¤µ¤ì¤Æ¤¤¤ë¡£
+はもともと競合が起きやすかったため、
+Linux 2.6.26 以降で削除されている。
 .TP
-.BR FUTEX_REQUEUE " (Linux 2.5.70 °Ê¹ß)"
-¤³¤ÎÁàºî¤Ï¡¢
+.BR FUTEX_REQUEUE " (Linux 2.5.70 以降)"
+この操作は、
 .B FUTEX_WAKE
-¤¬»È¤ï¤ì¤Æ¤¤¤Æ¡¢¤«¤Ä wake ¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥×¥í¥»¥¹¤¬
-¾¤Î futex ¤ò¼èÆÀ¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¡¢
-¡Ö½Ã¤Î·²¤ì¤Î˽Áö (thundering herd)¡×¸ú²Ì¤òÈò¤±¤ë¤¿¤á¤ËƳÆþ¤µ¤ì¤¿¡£
-¤³¤Î¸Æ¤Ó½Ð¤·¤Ï
+が使われていて、かつ wake されている全てのプロセスが
+他の futex を取得する必要がある場合に、
+「獣の群れの暴走 (thundering herd)」効果を避けるために導入された。
+この呼び出しは
 .I val
-¸Ä¤Î¥×¥í¥»¥¹¤ò wake ¤·¡¢¥¢¥É¥ì¥¹
+å\80\8bã\81®ã\83\97ã\83­ã\82»ã\82¹ã\82\92 wake ã\81\97ã\80\81ã\82¢ã\83\89ã\83¬ã\82¹
 .I uaddr2
-¤Ç futex ¤òÂԤäƤ¤¤ë¾¤ÎÁ´¤Æ¤Î¥×¥í¥»¥¹¤òºÆÅÙ¥­¥å¡¼¤Ë¤¤¤ì¤ë¡£
-°ú¤­¿ô
+で futex を待っている他の全てのプロセスを再度キューにいれる。
+引き数
 .I timeout
-¤È
+と
 .I val3
-¤Ï̵»ë¤µ¤ì¤ë¡£
+は無視される。
 .TP
-.BR FUTEX_CMP_REQUEUE " (Linux 2.6.7 °Ê¹ß)"
-¸Î°Õ¤Ë
+.BR FUTEX_CMP_REQUEUE " (Linux 2.6.7 以降)"
+故意に
 .B FUTEX_REQUEUE
-¤ò»È¤¦¾ì¹ç¤Ë¶¥¹ç¤¬µ¯¤³¤ë¤¿¤á¡¢
+を使う場合に競合が起こるため、
 .B FUTEX_CMP_REQUEUE
-¤¬Æ³Æþ¤µ¤ì¤¿¡£¤³¤ì¤Ï
+が導入された。これは
 .B FUTEX_REQUEUE
-¤È»÷¤Æ¤¤¤ë¤¬¡¢¾ì½ê
+と似ているが、場所
 .I uaddr
-¤ËÃÍ
+に値
 .I val3
-¤¬¤Þ¤ÀÊÝ»ý¤µ¤ì¤Æ¤¤¤ë¤«¤òºÇ½é¤Ë¥Á¥§¥Ã¥¯¤¹¤ë¡£
-ÊÝ»ý¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Áàºî¤Ï¥¨¥é¡¼
+がまだ保持されているかを最初にチェックする。
+ä¿\9dæ\8c\81ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81æ\93\8dä½\9cã\81¯ã\82¨ã\83©ã\83¼
 .B EAGAIN
-¤Ç¼ºÇÔ¤¹¤ë¡£°ú¤­¿ô
+で失敗する。引き数
 .I timeout
-¤Ï̵»ë¤µ¤ì¤ë¡£
-.SH ÊÖ¤êÃÍ
+は無視される。
+.SH 返り値
 .PP
-¤É¤ÎÁàºî¤¬¼Â¹Ô¤µ¤ì¤¿¤«¤Ë¤è¤Ã¤Æ¡¢
-À®¸ù»þ¤ÎÊÖ¤êÃͤΰÕÌ£¤¬ÊѤï¤ë¡£
+どの操作が実行されたかによって、
+成功時の返り値の意味が変わる。
 .TP
 .B FUTEX_WAIT
-¥×¥í¥»¥¹¤¬
+プロセスが
 .B FUTEX_WAKE
-¤Î¸Æ¤Ó½Ð¤·¤Ç wake ¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£
-¥¿¥¤¥à¥¢¥¦¥È¤Î¾ì¹ç¡¢Áàºî¤Ï¥¨¥é¡¼
+の呼び出しで wake すると 0 を返す。
+ã\82¿ã\82¤ã\83 ã\82¢ã\82¦ã\83\88ã\81®å ´å\90\88ã\80\81æ\93\8dä½\9cã\81¯ã\82¨ã\83©ã\83¼
 .B ETIMEOUT
-¤Ç¼ºÇÔ¤¹¤ë¡£
-futex ¤¬»ØÄꤵ¤ì¤¿ÃͤÈÅù¤·¤¯¤Ê¤¤¾ì¹ç¡¢
-¥¨¥é¡¼
+で失敗する。
+futex が指定された値と等しくない場合、
+ã\82¨ã\83©ã\83¼
 .B EWOULDBLOCK
-¤Ç¼ºÇÔ¤¹¤ë¡£
-¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¤«
+で失敗する。
+シグナルを受信するか
 .RB ( signal (7)
-»²¾È) Â¾¤Îµ¶¤Î wake ¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼
+å\8f\82ç\85§) ä»\96ã\81®å\81½ã\81® wake ã\81\8cã\81\82ã\81£ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\82¨ã\83©ã\83¼
 .B EINTR
-¤Ç¼ºÇÔ¤¹¤ë¡£
+で失敗する。
 .TP
 .B FUTEX_WAKE
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
+wake したプロセスの数を返す。
 .TP
 .B FUTEX_FD
-futex ¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£
+futex に関連づけられた新たなファイルディスクリプタを返す。
 .TP
 .B FUTEX_REQUEUE
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
+wake したプロセスの数を返す。
 .TP
 .B FUTEX_CMP_REQUEUE
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
+wake したプロセスの数を返す。
 .PP
-¥¨¥é¡¼¤Î¾ì¹ç¡¢Á´¤Æ¤ÎÁàºî¤Ç \-1 ¤¬Ê֤ꡢ
+エラーの場合、全ての操作で \-1 が返り、
 .I errno
-¤¬¥¨¥é¡¼¤ÎÆâÍƤò¼¨¤¹ÃͤËÀßÄꤵ¤ì¤ë¡£
-.SH ¥¨¥é¡¼
+がエラーの内容を示す値に設定される。
+.SH ã\82¨ã\83©ã\83¼
 .TP
 .B EACCES
-futex ¥á¥â¥ê¤ËÆɤ߹þ¤ß¥¢¥¯¥»¥¹¸¢¤¬¤Ê¤«¤Ã¤¿¡£
+futex メモリに読み込みアクセス権がなかった。
 .TP
 .B EAGAIN
 .B FUTEX_CMP_REQUEUE
-¤Çͽ´ü¤·¤Ê¤¤ futex Ãͤ¬¸«¤Ä¤«¤Ã¤¿
-(¤³¤ì¤Ï¶¥¹ç¤ò¼¨¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-¤³¤Î¾ì¹ç¤Ï°ÂÁ´¤Ê
+で予期しない futex 値が見つかった
+(これは競合を示しているかもしれない。
+この場合は安全な
 .B FUTEX_WAKE
-¤ò»È¤¦¤³¤È)¡£
+を使うこと)。
 .TP
 .B EFAULT
-¥æ¡¼¥¶¶õ´Ö¤«¤é
+ユーザ空間から
 .I timeout
-¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ëºÝ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
+の情報を取得する際にエラーが発生した。
 .TP
 .B EINVAL
-Áàºî¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£¤Þ¤¿¤Ï¥Ú¡¼¥¸¡¦¥¢¥é¥¤¥ó¥á¥ó¥È¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
+操作が定義されていない。またはページ・アラインメントでエラーが発生した。
 .TP
 .B ENFILE
-¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ÎÁí¿ô¤¬¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ë㤷¤¿¡£
+オープンされているファイルの総数がシステムの制限に達した。
 .TP
 .B ENOSYS
 .I op
-¤Ë̵¸ú¤ÊÁàºî¤¬»ØÄꤵ¤ì¤¿¡£
-.SH ¥Ð¡¼¥¸¥ç¥ó
+に無効な操作が指定された。
+.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 Ãí°Õ
+最初の 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 Ãø¼Ô
+繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として
+意図されたものではない
+(glibc にはこのシステムコールに対するラッパー関数はない)。
+実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライブラリの
+ソースを読み終えていることが要求される。
+.\" .SH 著者
 .\" .PP
-.\" futex ¤Ï Hubertus Franke (IBM Thomas J. Watson Research Center),
+.\" futex  Hubertus Franke (IBM Thomas J. Watson Research Center),
 .\" Matthew Kirkwood, Ingo Molnar (Red Hat),
-.\" Rusty Russell (IBM Linux Technology Center) ¤¬À߷פ·¡¢ºîÀ®¤·¤¿¡£
-.\" ¤³¤Î¥Ú¡¼¥¸¤Ï bert hubert ¤¬µ­¤·¤¿¡£
-.SH ´ØÏ¢¹àÌÜ
+.\" Rusty Russell (IBM Linux Technology Center) が設計し、作成した。
+.\" このページは bert hubert が記した。
+.SH 関連項目
 .BR futex (7)
 .PP
 \fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP
@@ -281,6 +281,6 @@ Linux 2.6.7 
 .br
 http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf
 .PP
-futex ¤Î»ÈÍÑÎã¥é¥¤¥Ö¥é¥ê, futex-*.tar.bz2
+futex の使用例ライブラリ, futex-*.tar.bz2
 .br
 ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/.