X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=test_urcu.c;h=d300610e049dc907147228e40d1c2b34245942b4;hp=47f69559f1df993edbc19e9c5262d39e6afabc47;hb=78efb485e9baa0408e8d96932a68784bc19e59a5;hpb=656c6da75f7ee119bfc49e026f52d695d0d1aea2 diff --git a/test_urcu.c b/test_urcu.c index 47f6955..d300610 100644 --- a/test_urcu.c +++ b/test_urcu.c @@ -59,39 +59,25 @@ struct test_array { int a; }; -static volatile int test_go; +static volatile int test_go, test_stop; static int wdelay; static struct test_array *test_rcu_pointer; static unsigned long duration; -static time_t start_time; -static unsigned long __thread duration_interval; -#define DURATION_TEST_DELAY_WRITE 4 -#define DURATION_TEST_DELAY_READ 100 /* * returns 0 if test should end. */ static int test_duration_write(void) { - if (duration_interval++ >= DURATION_TEST_DELAY_WRITE) { - duration_interval = 0; - if (time(NULL) - start_time >= duration) - return 0; - } - return 1; + return !test_stop; } static int test_duration_read(void) { - if (duration_interval++ >= DURATION_TEST_DELAY_READ) { - duration_interval = 0; - if (time(NULL) - start_time >= duration) - return 0; - } - return 1; + return !test_stop; } static unsigned long long __thread nr_writes; @@ -323,10 +309,14 @@ int main(int argc, char **argv) exit(1); } - start_time = time(NULL); - test_go = 1; smp_mb(); + test_go = 1; + + sleep(duration); + + test_stop = 1; + for (i = 0; i < nr_readers; i++) { err = pthread_join(tid_reader[i], &tret); if (err != 0)