From 63ad44cb922c9267c9acc64d35dc0c71020acd65 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sat, 28 Feb 2015 02:25:47 +0100 Subject: [PATCH] futex.2: simplify example Do not duplicate coding. Signed-off-by: Heinrich Schuchardt Signed-off-by: Michael Kerrisk --- man2/futex.2 | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/man2/futex.2 b/man2/futex.2 index 8e709b536..f9d58d443 100644 --- a/man2/futex.2 +++ b/man2/futex.2 @@ -1582,24 +1582,15 @@ fwait(int *futexp) machine\-language instructions. For further information, see the GCC Manual. */ - /* Maybe the futex is already available: */ - - if (__sync_bool_compare_and_swap(futexp, 1, 0)) - return; - - /* No; we must wait for the futex value to be changed */ - while (1) { - s = futex(futexp, FUTEX_WAIT, 0, NULL, NULL, 0); - if (s == \-1 && errno != EAGAIN) - errExit("futex\-FUTEX_WAIT"); - - /* Is the futex now available? */ - + /* Is the futex available? */ if (__sync_bool_compare_and_swap(futexp, 1, 0)) break; /* Yes */ - /* Futex is still not available; wait again */ + /* Futex is not available; wait */ + s = futex(futexp, FUTEX_WAIT, 0, NULL, NULL, 0); + if (s == \-1 && errno != EAGAIN) + errExit("futex\-FUTEX_WAIT"); } }