X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=Documentation%2Flocal_ops.txt;h=300da4bdfdbd703c4809bc4b3ec5433dfe634d1e;hb=ea876441052c2cebc27d9bd2a6f6b9bce6add408;hp=a134a563db32224d292ba83a3ddb06ba7223b83c;hpb=74beb9db77930be476b267ec8518a642f39a04bf;p=safe%2Fjmp%2Flinux-2.6 diff --git a/Documentation/local_ops.txt b/Documentation/local_ops.txt index a134a56..300da4b 100644 --- a/Documentation/local_ops.txt +++ b/Documentation/local_ops.txt @@ -27,16 +27,16 @@ CPU which owns the data. Therefore, care must taken to make sure that only one CPU writes to the local_t data. This is done by using per cpu data and making sure that we modify it from within a preemption safe context. It is however permitted to read local_t data from any CPU : it will then appear to be written -out of order wrt other memory writes on the owner CPU. +out of order wrt other memory writes by the owner CPU. * Implementation for a given architecture It can be done by slightly modifying the standard atomic operations : only their UP variant must be kept. It typically means removing LOCK prefix (on -i386 and x86_64) and any SMP sychronization barrier. If the architecture does +i386 and x86_64) and any SMP synchronization barrier. If the architecture does not have a different behavior between SMP and UP, including asm-generic/local.h -in your archtecture's local.h is sufficient. +in your architecture's local.h is sufficient. The local_t type is defined as an opaque signed long by embedding an atomic_long_t inside a structure. This is made so a cast from this type to a @@ -149,7 +149,7 @@ static void do_test_timer(unsigned long data) int cpu; /* Increment the counters */ - on_each_cpu(test_each, NULL, 0, 1); + on_each_cpu(test_each, NULL, 1); /* Read all the counters */ printk("Counters read from CPU %d\n", smp_processor_id()); for_each_online_cpu(cpu) {