Unreliable Guide To Locking | ||
---|---|---|
<<< Previous | Common Techniques | Next >>> |
There are a number of atomic operations defined in include/asm/atomic.h: these are guaranteed to be seen atomically from all CPUs in the system, thus avoiding races. If your shared data consists of a single counter, say, these operations might be simpler than using spinlocks (although for anything non-trivial using spinlocks is clearer).
Note that the atomic operations do in general not act as memory barriers. Instead you can insert a memory barrier before or after atomic_inc() or atomic_dec() by inserting smp_mb__before_atomic_inc(), smp_mb__after_atomic_inc(), smp_mb__before_atomic_dec() or smp_mb__after_atomic_dec() respectively. The advantage of using those macros instead of smp_mb() is, that they are cheaper on some platforms.
<<< Previous | Home | Next >>> |
Avoiding Locks: Read And Write Ordering | Up | Protecting A Collection of Objects: Reference Counts |