X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=tests%2Fbenchmark%2Ftest_urcu_wfcq.c;h=9f879253862e3f22cdf6eb21a615b37df7dbbadc;hp=bdd5b0928fb9081ae9c312fcdde84b509dd9107d;hb=bd23a6c64e8ccff9a666441958e34793748ebd3a;hpb=d863e15371666dff14e7f3191de5ff91d9b24d7f diff --git a/tests/benchmark/test_urcu_wfcq.c b/tests/benchmark/test_urcu_wfcq.c index bdd5b09..9f87925 100644 --- a/tests/benchmark/test_urcu_wfcq.c +++ b/tests/benchmark/test_urcu_wfcq.c @@ -21,8 +21,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE -#include "config.h" #include #include #include @@ -39,7 +37,6 @@ #include #include #include -#include "cpuset.h" #include "thread-id.h" /* hardcoded number of CPUs */ @@ -77,7 +74,7 @@ static inline void loop_sleep(unsigned long loops) static int verbose_mode; static int test_dequeue, test_splice, test_wait_empty; -static int test_enqueue_stopped; +static unsigned int test_enqueue_stopped; #define printf_verbose(fmt, args...) \ do { \ @@ -116,11 +113,7 @@ static void set_affinity(void) CPU_ZERO(&mask); CPU_SET(cpu, &mask); -#if SCHED_SETAFFINITY_ARGS == 2 - sched_setaffinity(0, &mask); -#else sched_setaffinity(0, sizeof(mask), &mask); -#endif #endif /* HAVE_SCHED_SETAFFINITY */ } @@ -260,6 +253,7 @@ static void do_test_splice(enum test_sync sync) URCU_TLS(nr_successful_dequeues)++; URCU_TLS(nr_dequeues)++; } + cds_wfcq_destroy(&tmp_head, &tmp_tail); } static void *thr_dequeuer(void *_count) @@ -309,8 +303,8 @@ static void *thr_dequeuer(void *_count) return ((void*)2); } -static void test_end(unsigned long long *nr_dequeues, - unsigned long long *nr_dequeue_last) +static void test_end(unsigned long long *nr_dequeues_l, + unsigned long long *nr_dequeue_last_l) { struct cds_wfcq_node *node; int state; @@ -320,9 +314,9 @@ static void test_end(unsigned long long *nr_dequeues, &state); if (node) { if (state & CDS_WFCQ_STATE_LAST) - (*nr_dequeue_last)++; + (*nr_dequeue_last_l)++; free(node); - (*nr_dequeues)++; + (*nr_dequeues_l)++; } } while (node); } @@ -358,6 +352,7 @@ int main(int argc, char **argv) tot_splice = 0, tot_dequeue_last = 0; unsigned long long end_dequeues = 0; int i, a, retval = 0; + unsigned int i_thr; if (argc < 4) { show_usage(argc, argv); @@ -375,7 +370,7 @@ int main(int argc, char **argv) show_usage(argc, argv); return -1; } - + err = sscanf(argv[3], "%lu", &duration); if (err != 1) { show_usage(argc, argv); @@ -472,15 +467,15 @@ int main(int argc, char **argv) next_aff = 0; - for (i = 0; i < nr_enqueuers; i++) { - err = pthread_create(&tid_enqueuer[i], NULL, thr_enqueuer, - &count_enqueuer[3 * i]); + for (i_thr = 0; i_thr < nr_enqueuers; i_thr++) { + err = pthread_create(&tid_enqueuer[i_thr], NULL, thr_enqueuer, + &count_enqueuer[3 * i_thr]); if (err != 0) exit(1); } - for (i = 0; i < nr_dequeuers; i++) { - err = pthread_create(&tid_dequeuer[i], NULL, thr_dequeuer, - &count_dequeuer[4 * i]); + for (i_thr = 0; i_thr < nr_dequeuers; i_thr++) { + err = pthread_create(&tid_dequeuer[i_thr], NULL, thr_dequeuer, + &count_dequeuer[4 * i_thr]); if (err != 0) exit(1); } @@ -489,10 +484,12 @@ int main(int argc, char **argv) test_go = 1; - for (i = 0; i < duration; i++) { + for (i_thr = 0; i_thr < duration; i_thr++) { sleep(1); - if (verbose_mode) - (void) write(1, ".", 1); + if (verbose_mode) { + fwrite(".", sizeof(char), 1, stdout); + fflush(stdout); + } } test_stop_enqueue = 1; @@ -508,24 +505,24 @@ int main(int argc, char **argv) test_stop_dequeue = 1; - for (i = 0; i < nr_enqueuers; i++) { - err = pthread_join(tid_enqueuer[i], &tret); + for (i_thr = 0; i_thr < nr_enqueuers; i_thr++) { + err = pthread_join(tid_enqueuer[i_thr], &tret); if (err != 0) exit(1); - tot_enqueues += count_enqueuer[3 * i]; - tot_successful_enqueues += count_enqueuer[3 * i + 1]; - tot_empty_dest_enqueues += count_enqueuer[3 * i + 2]; + tot_enqueues += count_enqueuer[3 * i_thr]; + tot_successful_enqueues += count_enqueuer[3 * i_thr + 1]; + tot_empty_dest_enqueues += count_enqueuer[3 * i_thr + 2]; } - for (i = 0; i < nr_dequeuers; i++) { - err = pthread_join(tid_dequeuer[i], &tret); + for (i_thr = 0; i_thr < nr_dequeuers; i_thr++) { + err = pthread_join(tid_dequeuer[i_thr], &tret); if (err != 0) exit(1); - tot_dequeues += count_dequeuer[4 * i]; - tot_successful_dequeues += count_dequeuer[4 * i + 1]; - tot_splice += count_dequeuer[4 * i + 2]; - tot_dequeue_last += count_dequeuer[4 * i + 3]; + tot_dequeues += count_dequeuer[4 * i_thr]; + tot_successful_dequeues += count_dequeuer[4 * i_thr + 1]; + tot_splice += count_dequeuer[4 * i_thr + 2]; + tot_dequeue_last += count_dequeuer[4 * i_thr + 3]; } - + test_end(&end_dequeues, &tot_dequeue_last); printf_verbose("total number of enqueues : %llu, dequeues %llu\n", @@ -573,9 +570,11 @@ int main(int argc, char **argv) tot_dequeue_last); retval = 1; } + cds_wfcq_destroy(&head, &tail); free(count_enqueuer); free(count_dequeuer); free(tid_enqueuer); free(tid_dequeuer); + return retval; }