X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu-call-rcu-impl.h;h=e0a8fd883ee4a24782b3464a970f20be645b5fdc;hb=f377678692caa9f589275eae4f2774104f26a8c6;hp=c14cc18bde825c6c3cfec1557222e764c88f85a9;hpb=0938c5415e2a0bf18afc9a225466ddf01e7cbb3d;p=userspace-rcu.git diff --git a/urcu-call-rcu-impl.h b/urcu-call-rcu-impl.h index c14cc18..e0a8fd8 100644 --- a/urcu-call-rcu-impl.h +++ b/urcu-call-rcu-impl.h @@ -383,9 +383,10 @@ struct call_rcu_data *create_call_rcu_data(unsigned long flags, int set_cpu_call_rcu_data(int cpu, struct call_rcu_data *crdp) { - int warned = 0; + static int warned = 0; call_rcu_lock(&call_rcu_mutex); + alloc_cpu_call_rcu_data(); if (cpu < 0 || maxcpus <= cpu) { if (!warned) { fprintf(stderr, "[error] liburcu: set CPU # out of range\n"); @@ -395,7 +396,6 @@ int set_cpu_call_rcu_data(int cpu, struct call_rcu_data *crdp) errno = EINVAL; return -EINVAL; } - alloc_cpu_call_rcu_data(); call_rcu_unlock(&call_rcu_mutex); if (per_cpu_call_rcu_data == NULL) { errno = ENOMEM;