-.\" FIXME . Check that this flag does eventually get removed.
-.\"O Because it was inherently racy,
-.\"O .B FUTEX_FD
-.\"O has been removed from Linux 2.6.26 onward.
-.B FUTEX_FD
-¤Ï¤â¤È¤â¤È¶¥¹ç¤¬µ¯¤¤ä¤¹¤«¤Ã¤¿¤¿¤á¡¢
-Linux 2.6.26 °Ê¹ß¤Çºï½ü¤µ¤ì¤Æ¤¤¤ë¡£
-.TP
-.\"O .BR FUTEX_REQUEUE " (since Linux 2.5.70)"
-.BR FUTEX_REQUEUE " (Linux 2.5.70 °Ê¹ß)"
-.\"O This operation was introduced in order to avoid a "thundering herd" effect
-.\"O when
-.\"O .B FUTEX_WAKE
-.\"O is used and all processes woken up need to acquire another
-.\"O futex.
-.\"O This call wakes up
-.\"O .I val
-.\"O processes, and requeues all other waiters on the futex at address
-.\"O .IR uaddr2 .
-¤³¤ÎÁàºî¤Ï¡¢
-.B FUTEX_WAKE
-¤¬»È¤ï¤ì¤Æ¤¤¤Æ¡¢¤«¤Ä wake ¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥×¥í¥»¥¹¤¬
-¾¤Î futex ¤ò¼èÆÀ¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¡¢
-¡Ö½Ã¤Î·²¤ì¤Î˽Áö (thundering herd)¡×¸ú²Ì¤òÈò¤±¤ë¤¿¤á¤ËƳÆþ¤µ¤ì¤¿¡£
-¤³¤Î¸Æ¤Ó½Ð¤·¤Ï
-.I val
-¸Ä¤Î¥×¥í¥»¥¹¤ò wake ¤·¡¢¥¢¥É¥ì¥¹
-.I uaddr2
-¤Ç futex ¤òÂԤäƤ¤¤ë¾¤ÎÁ´¤Æ¤Î¥×¥í¥»¥¹¤òºÆÅÙ¥¥å¡¼¤Ë¤¤¤ì¤ë¡£
-.\"O The arguments
-.\"O .I timeout
-.\"O and
-.\"O .I val3
-.\"O are ignored.
-°ú¤¿ô
-.I timeout
-¤È
-.I val3
-¤Ï̵»ë¤µ¤ì¤ë¡£
-.TP
-.\"O .BR FUTEX_CMP_REQUEUE " (since Linux 2.6.7)"
-.BR FUTEX_CMP_REQUEUE " (Linux 2.6.7 °Ê¹ß)"
-.\"O There was a race in the intended use of
-.\"O .BR FUTEX_REQUEUE ,
-.\"O so
-.\"O .B FUTEX_CMP_REQUEUE
-.\"O was introduced.
-.\"O This is similar to
-.\"O .BR FUTEX_REQUEUE ,
-.\"O but first checks whether the location
-.\"O .I uaddr
-.\"O still contains the value
-.\"O .IR val3 .
-.\"Osato:
-.\"Osato: intended ¤¬¤è¤¯Ê¬¤«¤é¤Ê¤¤¡£
-.\"Osato:
-¸Î°Õ¤Ë
-.B FUTEX_REQUEUE
-¤ò»È¤¦¾ì¹ç¤Ë¶¥¹ç¤¬µ¯¤³¤ë¤¿¤á¡¢
-.B FUTEX_CMP_REQUEUE
-¤¬Æ³Æþ¤µ¤ì¤¿¡£¤³¤ì¤Ï
-.B FUTEX_REQUEUE
-¤È»÷¤Æ¤¤¤ë¤¬¡¢¾ì½ê
-.I uaddr
-¤ËÃÍ
-.I val3
-¤¬¤Þ¤ÀÊÝ»ý¤µ¤ì¤Æ¤¤¤ë¤«¤òºÇ½é¤Ë¥Á¥§¥Ã¥¯¤¹¤ë¡£
-.\"O If not, the operation fails with the error
-.\"O .BR EAGAIN .
-.\"O The argument
-.\"O .I timeout
-.\"O is ignored.
-ÊÝ»ý¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Áàºî¤Ï¥¨¥é¡¼
-.B EAGAIN
-¤Ç¼ºÇÔ¤¹¤ë¡£°ú¤¿ô
-.I timeout
-¤Ï̵»ë¤µ¤ì¤ë¡£
-.\"O .SH "RETURN VALUE"
-.SH ÊÖ¤êÃÍ
-.PP
-.\"O Depending on which operation was executed,
-.\"O the returned value for a successful call can have differing meanings.
-¤É¤ÎÁàºî¤¬¼Â¹Ô¤µ¤ì¤¿¤«¤Ë¤è¤Ã¤Æ¡¢
-À®¸ù»þ¤ÎÊÖ¤êÃͤΰÕÌ£¤¬ÊѤï¤ë¡£
-.TP
-.B FUTEX_WAIT
-.\"O Returns 0 if the process was woken by a
-.\"O .B FUTEX_WAKE
-.\"O call.
-.\"O In case of timeout,
-.\"O the operation fails with the error
-.\"O .BR ETIMEDOUT .
-.\"O If the futex was not equal to the expected value,
-.\"O the operation fails with the error
-.\"O .BR EWOULDBLOCK .
-.\"O Signals (see
-.\"O .BR signal (7))
-.\"O or other spurious wakeups cause
-.\"O .B FUTEX_WAIT
-.\"O to fail with the error
-.\"O .BR EINTR .
-¥×¥í¥»¥¹¤¬
-.B FUTEX_WAKE
-¤Î¸Æ¤Ó½Ð¤·¤Ç wake ¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£
-¥¿¥¤¥à¥¢¥¦¥È¤Î¾ì¹ç¡¢Áàºî¤Ï¥¨¥é¡¼
-.B ETIMEOUT
-¤Ç¼ºÇÔ¤¹¤ë¡£
-futex ¤¬»ØÄꤵ¤ì¤¿ÃͤÈÅù¤·¤¯¤Ê¤¤¾ì¹ç¡¢
-¥¨¥é¡¼
-.B EWOULDBLOCK
-¤Ç¼ºÇÔ¤¹¤ë¡£
-¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¤«
-.RB ( signal (7)
-»²¾È) ¾¤Îµ¶¤Î wake ¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼
-.B EINTR
-¤Ç¼ºÇÔ¤¹¤ë¡£
-.TP
-.B FUTEX_WAKE
-.\"O Returns the number of processes woken up.
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
-.TP
-.B FUTEX_FD
-.\"O Returns the new file descriptor associated with the futex.
-futex ¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£
-.TP
-.B FUTEX_REQUEUE
-.\"O Returns the number of processes woken up.
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
-.TP
-.B FUTEX_CMP_REQUEUE
-.\"O Returns the number of processes woken up.
-wake ¤·¤¿¥×¥í¥»¥¹¤Î¿ô¤òÊÖ¤¹¡£
+\fBFUTEX_FD\fP はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除されている。
+.TP
+\fBFUTEX_REQUEUE\fP (Linux 2.5.70 以降)
+この操作は、 \fBFUTEX_WAKE\fP が使われていて、かつ wake されている全てのプロセスが 他の futex を取得する必要がある場合に、
+「獣の群れの暴走 (thundering herd)」効果を避けるために導入された。 この呼び出しは \fIval\fP 個のプロセスを wake
+し、アドレス \fIuaddr2\fP で futex を待っている他の全てのプロセスを再度キューにいれる。 引き数 \fItimeout\fP と \fIval3\fP
+は無視される。
+.TP
+\fBFUTEX_CMP_REQUEUE\fP (Linux 2.6.7 以降)
+故意に \fBFUTEX_REQUEUE\fP を使う場合に競合が起こるため、 \fBFUTEX_CMP_REQUEUE\fP が導入された。これは
+\fBFUTEX_REQUEUE\fP と似ているが、場所 \fIuaddr\fP に値 \fIval3\fP がまだ保持されているかを最初にチェックする。
+保持されていない場合、操作はエラー \fBEAGAIN\fP で失敗する。引き数 \fItimeout\fP は無視される。
+.SH 返り値