Messages in this thread | | | Subject | Re: [PATCH] percpu_counter: change inaccurate comment | From | Eric Dumazet <> | Date | Thu, 07 Oct 2010 22:42:11 +0200 |
| |
Le jeudi 07 octobre 2010 à 15:13 -0500, Christoph Lameter a écrit : > On Thu, 7 Oct 2010, Eric Dumazet wrote: > > > If enclosed by preempt_disable()/preempt_enable(), maybe we could use > > __this_cpu_ptr() ? > > The only difference between __this_cpu_ptr and this_cpu_ptr is that > this_cpu_ptr checks that preempt was disabled. __this_cpu_ptr allows use > even without preempt. Preempt must be disabled here so the use of > this_cpu_ptr is appropriate. > >
Thats not how I read the thing.
In both variants, preemption _must_ be disabled, its only the context that can tell how sure we are...
<quote>
commit 7340a0b15280c
__this_cpu_ptr -> Do not check for preemption context this_cpu_ptr -> Check preemption context
</quote>
If preemption was enabled, both pointers would not be very useful...
We use __this_cpu_ptr() in contexts where cpu _cannot_ change under us, (we just disabled preemption one line above), so its not necessary to perform the check.
vi +316 include/linux/percpu.h
#define _this_cpu_generic_to_op(pcp, val, op) \ do { \ preempt_disable(); \ *__this_cpu_ptr(&(pcp)) op val; \ preempt_enable(); \ } while (0)
...
#define __this_cpu_generic_to_op(pcp, val, op) \ do { \ *__this_cpu_ptr(&(pcp)) op val; \ } while (0)
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |