Fix tests: use of uninitialized variables
[urcu.git] / tests / test_urcu_wfcq.c
index 6af02405b954b57eb66be5388eadd857d2cfad4f..f04c9bd8b6874424bf830f722787c6e531e415eb 100644 (file)
 #include <urcu/tls-compat.h>
 #include <urcu/uatomic.h>
 #include "cpuset.h"
-
-#ifdef __linux__
-#include <syscall.h>
-#endif
+#include "thread-id.h"
 
 /* hardcoded number of CPUs */
 #define NR_CPUS 16384
 
-#if defined(_syscall0)
-_syscall0(pid_t, gettid)
-#elif defined(__NR_gettid)
-static inline pid_t gettid(void)
-{
-       return syscall(__NR_gettid);
-}
-#else
-#warning "use pid as tid"
-static inline pid_t gettid(void)
-{
-       return getpid();
-}
-#endif
-
 #ifndef DYNAMIC_LINK_TEST
 #define _LGPL_SOURCE
 #endif
@@ -175,9 +157,8 @@ static void *thr_enqueuer(void *_count)
        unsigned long long *count = _count;
        bool was_nonempty;
 
-       printf_verbose("thread_begin %s, thread id : %lx, tid %lu\n",
-                       "enqueuer", (unsigned long) pthread_self(),
-                       (unsigned long) gettid());
+       printf_verbose("thread_begin %s, tid %lu\n",
+                       "enqueuer", urcu_get_thread_id());
 
        set_affinity();
 
@@ -208,14 +189,13 @@ fail:
        count[0] = URCU_TLS(nr_enqueues);
        count[1] = URCU_TLS(nr_successful_enqueues);
        count[2] = URCU_TLS(nr_empty_dest_enqueues);
-       printf_verbose("enqueuer thread_end, thread id : %lx, tid %lu, "
-                      "enqueues %llu successful_enqueues %llu, "
-                      "empty_dest_enqueues %llu\n",
-                      pthread_self(),
-                       (unsigned long) gettid(),
-                      URCU_TLS(nr_enqueues),
-                      URCU_TLS(nr_successful_enqueues),
-                      URCU_TLS(nr_empty_dest_enqueues));
+       printf_verbose("enqueuer thread_end, tid %lu, "
+                       "enqueues %llu successful_enqueues %llu, "
+                       "empty_dest_enqueues %llu\n",
+                       urcu_get_thread_id(),
+                       URCU_TLS(nr_enqueues),
+                       URCU_TLS(nr_successful_enqueues),
+                       URCU_TLS(nr_empty_dest_enqueues));
        return ((void*)1);
 
 }
@@ -285,11 +265,10 @@ static void do_test_splice(enum test_sync sync)
 static void *thr_dequeuer(void *_count)
 {
        unsigned long long *count = _count;
-       unsigned int counter;
+       unsigned int counter = 0;
 
-       printf_verbose("thread_begin %s, thread id : %lx, tid %lu\n",
-                       "dequeuer", (unsigned long) pthread_self(),
-                       (unsigned long) gettid());
+       printf_verbose("thread_begin %s, tid %lu\n",
+                       "dequeuer", urcu_get_thread_id());
 
        set_affinity();
 
@@ -317,13 +296,12 @@ static void *thr_dequeuer(void *_count)
                        loop_sleep(rduration);
        }
 
-       printf_verbose("dequeuer thread_end, thread id : %lx, tid %lu, "
-                      "dequeues %llu, successful_dequeues %llu, "
-                      "nr_splice %llu\n",
-                      pthread_self(),
-                       (unsigned long) gettid(),
-                      URCU_TLS(nr_dequeues), URCU_TLS(nr_successful_dequeues),
-                      URCU_TLS(nr_splice));
+       printf_verbose("dequeuer thread_end, tid %lu, "
+                       "dequeues %llu, successful_dequeues %llu, "
+                       "nr_splice %llu\n",
+                       urcu_get_thread_id(),
+                       URCU_TLS(nr_dequeues), URCU_TLS(nr_successful_dequeues),
+                       URCU_TLS(nr_splice));
        count[0] = URCU_TLS(nr_dequeues);
        count[1] = URCU_TLS(nr_successful_dequeues);
        count[2] = URCU_TLS(nr_splice);
@@ -351,17 +329,19 @@ static void test_end(unsigned long long *nr_dequeues,
 
 static void show_usage(int argc, char **argv)
 {
-       printf("Usage : %s nr_dequeuers nr_enqueuers duration (s)", argv[0]);
-       printf(" [-d delay] (enqueuer period (in loops))");
-       printf(" [-c duration] (dequeuer period (in loops))");
-       printf(" [-v] (verbose output)");
-       printf(" [-a cpu#] [-a cpu#]... (affinity)");
-       printf(" [-q] (test dequeue)");
-       printf(" [-s] (test splice, enabled by default)");
-       printf(" [-M] (use mutex external synchronization)");
-       printf("      Note: default: no external synchronization used.");
-       printf(" [-f] (force user-provided synchronization)");
-       printf(" [-w] Wait for dequeuer to empty queue");
+       printf("Usage : %s nr_dequeuers nr_enqueuers duration (s) <OPTIONS>\n",
+               argv[0]);
+       printf("OPTIONS:\n");
+       printf("        [-d delay] (enqueuer period (in loops))\n");
+       printf("        [-c duration] (dequeuer period (in loops))\n");
+       printf("        [-v] (verbose output)\n");
+       printf("        [-a cpu#] [-a cpu#]... (affinity)\n");
+       printf("        [-q] (test dequeue)\n");
+       printf("        [-s] (test splice, enabled by default)\n");
+       printf("        [-M] (use mutex external synchronization)\n");
+       printf("                Note: default: no external synchronization used.\n");
+       printf("        [-f] (force user-provided synchronization)\n");
+       printf("        [-w] Wait for dequeuer to empty queue\n");
        printf("\n");
 }
 
@@ -481,14 +461,13 @@ int main(int argc, char **argv)
                printf_verbose("Wait for dequeuers to empty queue.\n");
        printf_verbose("Writer delay : %lu loops.\n", rduration);
        printf_verbose("Reader duration : %lu loops.\n", wdelay);
-       printf_verbose("thread %-6s, thread id : %lx, tid %lu\n",
-                       "main", (unsigned long) pthread_self(),
-                       (unsigned long) gettid());
-
-       tid_enqueuer = malloc(sizeof(*tid_enqueuer) * nr_enqueuers);
-       tid_dequeuer = malloc(sizeof(*tid_dequeuer) * nr_dequeuers);
-       count_enqueuer = malloc(3 * sizeof(*count_enqueuer) * nr_enqueuers);
-       count_dequeuer = malloc(4 * sizeof(*count_dequeuer) * nr_dequeuers);
+       printf_verbose("thread %-6s, tid %lu\n",
+                       "main", urcu_get_thread_id());
+
+       tid_enqueuer = calloc(nr_enqueuers, sizeof(*tid_enqueuer));
+       tid_dequeuer = calloc(nr_dequeuers, sizeof(*tid_dequeuer));
+       count_enqueuer = calloc(nr_enqueuers, 3 * sizeof(*count_enqueuer));
+       count_dequeuer = calloc(nr_dequeuers, 4 * sizeof(*count_dequeuer));
        cds_wfcq_init(&head, &tail);
 
        next_aff = 0;
This page took 0.024042 seconds and 4 git commands to generate.