From: Christoph Lameter Date: Tue, 26 Oct 2010 21:23:09 +0000 (-0700) Subject: percpu_counter: use this_cpu_ptr() instead of per_cpu_ptr() X-Git-Tag: v3.12-rc1~8357^2~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ea00c30b5b31baa91be29bee966204eccc15e9d3;p=kernel%2Fkernel-generic.git percpu_counter: use this_cpu_ptr() instead of per_cpu_ptr() this_cpu_ptr() avoids an array lookup and can use the percpu offset of the local cpu directly. Signed-off-by: Christoph Lameter Cc: Eric Dumazet Cc: Tejun Heo Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index 1d954ea..604678d 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c @@ -73,9 +73,9 @@ void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch) { s64 count; s32 *pcount; - int cpu = get_cpu(); - pcount = per_cpu_ptr(fbc->counters, cpu); + preempt_disable(); + pcount = this_cpu_ptr(fbc->counters); count = *pcount + amount; if (count >= batch || count <= -batch) { spin_lock(&fbc->lock); @@ -85,7 +85,7 @@ void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch) } else { *pcount = count; } - put_cpu(); + preempt_enable(); } EXPORT_SYMBOL(__percpu_counter_add);