mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
Revert "local_t Documentation update"
This reverts commite1265205c0
. It's a duplicate commit of commit74beb9db77
, resulting in a duplicate section. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
545c442333
commit
34aebfd3bd
1 changed files with 0 additions and 23 deletions
|
@ -45,29 +45,6 @@ long fails. The definition looks like :
|
||||||
typedef struct { atomic_long_t a; } local_t;
|
typedef struct { atomic_long_t a; } local_t;
|
||||||
|
|
||||||
|
|
||||||
* Rules to follow when using local atomic operations
|
|
||||||
|
|
||||||
- Variables touched by local ops must be per cpu variables.
|
|
||||||
- _Only_ the CPU owner of these variables must write to them.
|
|
||||||
- This CPU can use local ops from any context (process, irq, softirq, nmi, ...)
|
|
||||||
to update its local_t variables.
|
|
||||||
- Preemption (or interrupts) must be disabled when using local ops in
|
|
||||||
process context to make sure the process won't be migrated to a
|
|
||||||
different CPU between getting the per-cpu variable and doing the
|
|
||||||
actual local op.
|
|
||||||
- When using local ops in interrupt context, no special care must be
|
|
||||||
taken on a mainline kernel, since they will run on the local CPU with
|
|
||||||
preemption already disabled. I suggest, however, to explicitly
|
|
||||||
disable preemption anyway to make sure it will still work correctly on
|
|
||||||
-rt kernels.
|
|
||||||
- Reading the local cpu variable will provide the current copy of the
|
|
||||||
variable.
|
|
||||||
- Reads of these variables can be done from any CPU, because updates to
|
|
||||||
"long", aligned, variables are always atomic. Since no memory
|
|
||||||
synchronization is done by the writer CPU, an outdated copy of the
|
|
||||||
variable can be read when reading some _other_ cpu's variables.
|
|
||||||
|
|
||||||
|
|
||||||
* Rules to follow when using local atomic operations
|
* Rules to follow when using local atomic operations
|
||||||
|
|
||||||
- Variables touched by local ops must be per cpu variables.
|
- Variables touched by local ops must be per cpu variables.
|
||||||
|
|
Loading…
Reference in a new issue