summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorhboehm <hboehm>2008-01-04 00:45:32 +0000
committerIvan Maidanski <ivmai@mail.ru>2011-07-25 16:03:24 +0400
commit8bb45851c47e376b6c2ef29cadd56f6ba49f959e (patch)
treec7550e0e41064ace46c2d75568a081fdb1fdad5b /doc
parentaad33e603caa9a88559c5f384103bb93051068d5 (diff)
downloadlibatomic_ops-8bb45851c47e376b6c2ef29cadd56f6ba49f959e.tar.gz
2008-01-03 Hans Boehm <Hans.Boehm@hp.com>
(Merge from separate atomic_ops tree) * src/atomic_ops/sysdeps/gcc/x86.h: Define correct macro for double-width cas, and fix its implementation. * doc/README.txt: Clarify use of _full. Add more warnings about data dependencies.
Diffstat (limited to 'doc')
-rw-r--r--doc/README.txt8
1 files changed, 7 insertions, 1 deletions
diff --git a/doc/README.txt b/doc/README.txt
index fa8f07e..e7c2f0d 100644
--- a/doc/README.txt
+++ b/doc/README.txt
@@ -154,6 +154,8 @@ _read: Subsequent reads must become visible after reads included in
_write: Earlier writes become visible before writes during or after
the atomic operation. Rarely useful for clients?
_full: Ordered with respect to both earlier and later memops.
+ AO_store_full or AO_nop_full are the normal ways to force a store
+ to be ordered with respect to a later load.
_release_write: Ordered with respect to earlier writes. This is
normally implemented as either a _write or _release
barrier.
@@ -163,7 +165,11 @@ _dd_acquire_read: Ordered with respect to later reads that are data
second value, with the expectation that the second
read is ordered after the first one. On most architectures,
this is equivalent to no barrier. (This is very
- hard to define precisely. It should probably be avoided.)
+ hard to define precisely. It should probably be avoided.
+ A major problem is that optimizers tend to try to
+ eliminate dependencies from the generated code, since
+ dependencies force the hardware to execute the code
+ serially.)
_release_read: Ordered with respect to earlier reads. Useful for
implementing read locks. Can be implemented as _release,
but not as _read, since _read groups the current operation