From 9744f3bb981bc24873b662c35d555197f1cf82b5 Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Thu, 15 Sep 2011 11:10:31 -0400 Subject: [PATCH] use get_cpu_call_rcu_data() for get_call_rcu_data() [ Impact: refactor duplicated code ] Signed-off-by: Lai Jiangshan Signed-off-by: Mathieu Desnoyers --- urcu-call-rcu-impl.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/urcu-call-rcu-impl.h b/urcu-call-rcu-impl.h index e0a8fd8..1fbce98 100644 --- a/urcu-call-rcu-impl.h +++ b/urcu-call-rcu-impl.h @@ -435,22 +435,17 @@ struct call_rcu_data *get_default_call_rcu_data(void) */ struct call_rcu_data *get_call_rcu_data(void) { - int curcpu; - static int warned = 0; + struct call_rcu_data *crd; if (thread_call_rcu_data != NULL) return thread_call_rcu_data; - if (maxcpus <= 0) - return get_default_call_rcu_data(); - curcpu = sched_getcpu(); - if (!warned && (curcpu < 0 || maxcpus <= curcpu)) { - fprintf(stderr, "[error] liburcu: gcrd CPU # out of range\n"); - warned = 1; + + if (maxcpus > 0) { + crd = get_cpu_call_rcu_data(sched_getcpu()); + if (crd) + return crd; } - if (curcpu >= 0 && maxcpus > curcpu && - per_cpu_call_rcu_data != NULL && - per_cpu_call_rcu_data[curcpu] != NULL) - return per_cpu_call_rcu_data[curcpu]; + return get_default_call_rcu_data(); } -- 2.34.1