Fix tests: use of uninitialized variables
[userspace-rcu.git] / tests / test_urcu_hash.c
index accf3c1ab1ff76a0e37b876da268ba690122e916..d5df1eb8ee352d872782867d4932d674bfde7123 100644 (file)
@@ -82,13 +82,13 @@ int (*get_populate_hash_cb(void))(void)
        return test_hash_cb[test_choice].populate_hash;
 }
 
-unsigned int __thread rand_lookup;
-unsigned long __thread nr_add;
-unsigned long __thread nr_addexist;
-unsigned long __thread nr_del;
-unsigned long __thread nr_delnoent;
-unsigned long __thread lookup_fail;
-unsigned long __thread lookup_ok;
+DEFINE_URCU_TLS(unsigned int, rand_lookup);
+DEFINE_URCU_TLS(unsigned long, nr_add);
+DEFINE_URCU_TLS(unsigned long, nr_addexist);
+DEFINE_URCU_TLS(unsigned long, nr_del);
+DEFINE_URCU_TLS(unsigned long, nr_delnoent);
+DEFINE_URCU_TLS(unsigned long, lookup_fail);
+DEFINE_URCU_TLS(unsigned long, lookup_ok);
 
 struct cds_lfht *test_ht;
 
@@ -126,8 +126,8 @@ int use_affinity = 0;
 
 pthread_mutex_t affinity_mutex = PTHREAD_MUTEX_INITIALIZER;
 
-unsigned long long __thread nr_writes;
-unsigned long long __thread nr_reads;
+DEFINE_URCU_TLS(unsigned long long, nr_writes);
+DEFINE_URCU_TLS(unsigned long long, nr_reads);
 
 unsigned int nr_readers;
 unsigned int nr_writers;
@@ -201,7 +201,8 @@ unsigned long test_compare(const void *key1, size_t key1_len,
 void *thr_count(void *arg)
 {
        printf_verbose("thread_begin %s, thread id : %lx, tid %lu\n",
-                       "counter", pthread_self(), (unsigned long)gettid());
+                       "counter", (unsigned long) pthread_self(),
+                       (unsigned long) gettid());
 
        rcu_register_thread();
 
@@ -536,12 +537,13 @@ int main(int argc, char **argv)
        printf_verbose("Number of hash chains: %lu.\n",
                nr_hash_chains);
        printf_verbose("thread %-6s, thread id : %lx, tid %lu\n",
-                       "main", pthread_self(), (unsigned long)gettid());
+                       "main", (unsigned long) pthread_self(),
+                       (unsigned long) gettid());
 
-       tid_reader = malloc(sizeof(*tid_reader) * nr_readers);
-       tid_writer = malloc(sizeof(*tid_writer) * nr_writers);
-       count_reader = malloc(sizeof(*count_reader) * nr_readers);
-       count_writer = malloc(sizeof(*count_writer) * nr_writers);
+       tid_reader = calloc(nr_readers, sizeof(*tid_reader));
+       tid_writer = calloc(nr_writers, sizeof(*tid_writer));
+       count_reader = calloc(nr_readers, sizeof(*count_reader));
+       count_writer = calloc(nr_writers, sizeof(*count_writer));
 
        err = create_all_cpu_call_rcu_data(0);
        if (err) {
@@ -560,6 +562,10 @@ int main(int argc, char **argv)
                                (opt_auto_resize ? CDS_LFHT_AUTO_RESIZE : 0) |
                                CDS_LFHT_ACCOUNTING, NULL);
        }
+       if (!test_ht) {
+               printf("Error allocating hash table.\n");
+               return -1;
+       }
 
        /*
         * Hash Population needs to be seen as a RCU reader
This page took 0.025328 seconds and 4 git commands to generate.