X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=test_qsbr.c;fp=test_qsbr.c;h=3d906cc4bc54d39f503b6bd4ae1f2082a05aff8e;hb=7685d9639221a1dc5c0eeba54a60d633618b242a;hp=a8cb79946a8db0ee5160efc8bd78ab58fd10b663;hpb=10c48e148fb55e862295fcd635fa68aa399e7362;p=urcu.git diff --git a/test_qsbr.c b/test_qsbr.c index a8cb799..3d906cc 100644 --- a/test_qsbr.c +++ b/test_qsbr.c @@ -31,6 +31,8 @@ #include #include +#include "arch.h" + #if defined(_syscall0) _syscall0(pid_t, gettid) #elif defined(__NR_gettid) @@ -166,6 +168,7 @@ void *thr_reader(void *_count) while (!test_go) { } + smp_mb(); for (;;) { _rcu_read_lock(); @@ -201,6 +204,7 @@ void *thr_writer(void *_count) while (!test_go) { } + smp_mb(); for (;;) { new = test_array_alloc(); @@ -234,7 +238,7 @@ void show_usage(int argc, char **argv) #ifdef DEBUG_YIELD printf(" [-r] [-w] (yield reader and/or writer)"); #endif - printf(" [-d delay] (writer period)"); + printf(" [-d delay] (writer period (us))"); printf("\n"); } @@ -295,7 +299,6 @@ int main(int argc, char **argv) printf("running test for %lu seconds, %u readers, %u writers.\n", duration, nr_readers, nr_writers); printf("Writer delay : %u us.\n", wdelay); - start_time = time(NULL); printf("thread %-6s, thread id : %lx, tid %lu\n", "main", pthread_self(), (unsigned long)gettid()); @@ -318,7 +321,9 @@ int main(int argc, char **argv) exit(1); } + start_time = time(NULL); test_go = 1; + smp_mb(); for (i = 0; i < nr_readers; i++) { err = pthread_join(tid_reader[i], &tret);