percpu: update local_ops.txt to reflect this_cpu operations
Update the documentation to reflect changes due to the availability of this_cpu operations. Signed-off-by: Christoph Lameter <cl@linux.com> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6c51ec4d18
commit
7d94a82e45
1 changed files with 9 additions and 4 deletions
|
@ -8,6 +8,11 @@ to implement them for any given architecture and shows how they can be used
|
||||||
properly. It also stresses on the precautions that must be taken when reading
|
properly. It also stresses on the precautions that must be taken when reading
|
||||||
those local variables across CPUs when the order of memory writes matters.
|
those local variables across CPUs when the order of memory writes matters.
|
||||||
|
|
||||||
|
Note that local_t based operations are not recommended for general kernel use.
|
||||||
|
Please use the this_cpu operations instead unless there is really a special purpose.
|
||||||
|
Most uses of local_t in the kernel have been replaced by this_cpu operations.
|
||||||
|
this_cpu operations combine the relocation with the local_t like semantics in
|
||||||
|
a single instruction and yield more compact and faster executing code.
|
||||||
|
|
||||||
|
|
||||||
* Purpose of local atomic operations
|
* Purpose of local atomic operations
|
||||||
|
@ -87,10 +92,10 @@ the per cpu variable. For instance :
|
||||||
local_inc(&get_cpu_var(counters));
|
local_inc(&get_cpu_var(counters));
|
||||||
put_cpu_var(counters);
|
put_cpu_var(counters);
|
||||||
|
|
||||||
If you are already in a preemption-safe context, you can directly use
|
If you are already in a preemption-safe context, you can use
|
||||||
__get_cpu_var() instead.
|
this_cpu_ptr() instead.
|
||||||
|
|
||||||
local_inc(&__get_cpu_var(counters));
|
local_inc(this_cpu_ptr(&counters));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,7 +139,7 @@ static void test_each(void *info)
|
||||||
{
|
{
|
||||||
/* Increment the counter from a non preemptible context */
|
/* Increment the counter from a non preemptible context */
|
||||||
printk("Increment on cpu %d\n", smp_processor_id());
|
printk("Increment on cpu %d\n", smp_processor_id());
|
||||||
local_inc(&__get_cpu_var(counters));
|
local_inc(this_cpu_ptr(&counters));
|
||||||
|
|
||||||
/* This is what incrementing the variable would look like within a
|
/* This is what incrementing the variable would look like within a
|
||||||
* preemptible context (it disables preemption) :
|
* preemptible context (it disables preemption) :
|
||||||
|
|
Loading…
Reference in a new issue