[ltt-dev] [PATCH 03/10] use get_cpu_call_rcu_data() for get_call_rcu_data()

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu Sep 15 11:08:50 EDT 2011


* Lai Jiangshan (laijs at cn.fujitsu.com) wrote:
> Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com>

[ Impact: refactor duplicated code ]

Merged, thanks!

Mathieu

> ---
>  urcu-call-rcu-impl.h |   19 +++++++------------
>  1 files 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();
>  }
>  
> -- 
> 1.7.4.4
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com




More information about the lttng-dev mailing list