OSDN Git Service
(root)
/
tomoyo
/
tomoyo-test1.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d65817b
)
perf bench futex: Handle spurious wakeups
author
Davidlohr Bueso
<dave@stgolabs.net>
Fri, 8 May 2015 18:38:00 +0000
(11:38 -0700)
committer
Arnaldo Carvalho de Melo
<acme@redhat.com>
Fri, 8 May 2015 19:24:02 +0000
(16:24 -0300)
Wrap futex_wait around a loop and catch for EINTR.
Either a spurious wakeup occurred or a signal interrupted is, either way
we need to block again.
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Link:
http://lkml.kernel.org/r/1431110280-20231-2-git-send-email-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/bench/futex-wake.c
patch
|
blob
|
history
diff --git
a/tools/perf/bench/futex-wake.c
b/tools/perf/bench/futex-wake.c
index
929f762
..
e5e41d3
100644
(file)
--- a/
tools/perf/bench/futex-wake.c
+++ b/
tools/perf/bench/futex-wake.c
@@
-60,7
+60,12
@@
static void *workerfn(void *arg __maybe_unused)
pthread_cond_wait(&thread_worker, &thread_lock);
pthread_mutex_unlock(&thread_lock);
- futex_wait(&futex1, 0, NULL, futex_flag);
+ while (1) {
+ if (futex_wait(&futex1, 0, NULL, futex_flag) != EINTR)
+ break;
+ }
+
+ pthread_exit(NULL);
return NULL;
}