X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fregression%2Frcutorture.h;h=1d4d05e0c2a42216d807f9296b2042b5fb3aa2ee;hb=e8e114e5256e32002d7fe686d87dc364bc632802;hp=ac5348cd465f004179839b14986e91e0781d7125;hpb=a142df4e35dcf835439bf6714e49e95a2a68f7a6;p=userspace-rcu.git diff --git a/tests/regression/rcutorture.h b/tests/regression/rcutorture.h index ac5348c..1d4d05e 100644 --- a/tests/regression/rcutorture.h +++ b/tests/regression/rcutorture.h @@ -342,6 +342,7 @@ void *rcu_read_stress_test(void *arg __attribute__((unused))) static pthread_mutex_t call_rcu_test_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t call_rcu_test_cond = PTHREAD_COND_INITIALIZER; +static bool call_rcu_wait; static void rcu_update_stress_test_rcu(struct rcu_head *head __attribute__((unused))) @@ -362,6 +363,7 @@ void rcu_update_stress_test_rcu(struct rcu_head *head __attribute__((unused))) strerror(errno)); abort(); } + call_rcu_wait = false; ret = pthread_mutex_unlock(&call_rcu_test_mutex); if (ret) { errno = ret; @@ -423,8 +425,11 @@ void *rcu_update_stress_test(void *arg __attribute__((unused))) * immediately after call_rcu (call_rcu needs * us to be registered RCU readers). */ - ret = pthread_cond_wait(&call_rcu_test_cond, - &call_rcu_test_mutex); + call_rcu_wait = true; + do { + ret = pthread_cond_wait(&call_rcu_test_cond, + &call_rcu_test_mutex); + } while (call_rcu_wait); if (ret) { errno = ret; diag("pthread_cond_signal: %s", @@ -532,7 +537,7 @@ int stresstest(int nreaders) */ static -void usage(char *argv[]) __attribute__((noreturn)); +void usage(char *argv[]) __attribute__((__noreturn__)); static void usage(char *argv[])