]> granicus.if.org Git - postgresql/commitdiff
Remove cautions about using volatile from spin.h.
authorRobert Haas <rhaas@postgresql.org>
Fri, 16 Oct 2015 18:06:22 +0000 (14:06 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 16 Oct 2015 18:06:22 +0000 (14:06 -0400)
Commit 0709b7ee72e4bc71ad07b7120acd117265ab51d0 obsoleted this comment
but neglected to update it.

Thomas Munro

src/include/storage/spin.h

index dc6856e4aca456ae4ce3898094ffbef90b944cfe..4674f48164e474dbb0d6dec0105aa15235a073e0 100644 (file)
  *     Callers must beware that the macro argument may be evaluated multiple
  *     times!
  *
- *     CAUTION: Care must be taken to ensure that loads and stores of
- *     shared memory values are not rearranged around spinlock acquire
- *     and release. This is done using the "volatile" qualifier: the C
- *     standard states that loads and stores of volatile objects cannot
- *     be rearranged *with respect to other volatile objects*. The
- *     spinlock is always written through a volatile pointer by the
- *     spinlock macros, but this is not sufficient by itself: code that
- *     protects shared data with a spinlock MUST reference that shared
- *     data through a volatile pointer.
+ *     Load and store operations in calling code are guaranteed not to be
+ *     reordered with respect to these operations, because they include a
+ *     compiler barrier.  (Before PostgreSQL 9.5, callers needed to use a
+ *     volatile qualifier to access data protected by spinlocks.)
  *
  *     Keep in mind the coding rule that spinlocks must not be held for more
  *     than a few instructions.  In particular, we assume it is not possible