Nick Piggin wrote:Stefan Richter wrote:Nick Piggin wrote:Documentation/atomic_ops.txt
I don't know why people would assume volatile of atomics. AFAIK, most
of the documentation is pretty clear that all the atomic stuff can be
reordered etc. except for those that modify and return a value.
Which documentation is there?
For driver authors, there is LDD3. It doesn't specifically cover"Semantics and Behavior of Atomic and Bitmask Operations" is
effects of optimization on accesses to atomic_t.
For architecture port authors, there is Documentation/atomic_ops.txt.
Driver authors also can learn something from that document, as it
indirectly documents the atomic_t and bitops APIs.
pretty direct :)
Sure, it says that it's for arch maintainers, but there is no
reason why users can't make use of it.
Note, LDD3 page 238 says: "It is worth noting that most of the other
kernel primitives dealing with synchronization, such as spinlock and
atomic_t operations, also function as memory barriers."
I don't know about Linux 2.6.10 against which LDD3 was written, but
currently only _some_ atomic_t operations function as memory barriers.
Besides, judging from some posts in this thread, saying that atomic_t
operations dealt with synchronization may not be entirely precise.