{
int i;
int me = (long)arg;
- cpu_set_t mask;
long long n_reads_local = 0;
urcu_register_thread();
n_updates_local++;
}
__get_thread_var(n_updates_pt) += n_updates_local;
+ return NULL;
}
void perftestinit(void)
int mbtest;
};
-struct rcu_stress rcu_stress_array[RCU_STRESS_PIPE_LEN] = { 0 };
+struct rcu_stress rcu_stress_array[RCU_STRESS_PIPE_LEN] = { { 0 } };
struct rcu_stress *rcu_stress_current;
int rcu_stress_idx = 0;
synchronize_rcu();
n_updates++;
}
+ return NULL;
}
void *rcu_fake_update_stress_test(void *arg)
{
- int i;
- struct rcu_stress *p;
-
while (goflag == GOFLAG_INIT)
poll(NULL, 0, 1);
while (goflag == GOFLAG_RUN) {
synchronize_rcu();
poll(NULL, 0, 1);
}
+ return NULL;
}
void stresstest(int nreaders)
wait_all_threads();
for_each_thread(t)
n_reads += per_thread(n_reads_pt, t);
- printf("n_reads: %lld n_updates: %ld n_mberror: %ld\n",
+ printf("n_reads: %lld n_updates: %ld n_mberror: %d\n",
n_reads, n_updates, n_mberror);
printf("rcu_stress_count:");
for (i = 0; i <= RCU_STRESS_PIPE_LEN; i++) {
/* The data dependency "read urcu_gp_ctr, write urcu_active_readers",
* serializes those two memory operations. */
if (likely(!(tmp & RCU_GP_CTR_NEST_MASK)))
- urcu_active_readers = urcu_gp_ctr;
+ urcu_active_readers = ACCESS_ONCE(urcu_gp_ctr);
else
urcu_active_readers = tmp + RCU_GP_COUNT;
/*