Documentation improvement and minor code cleanups for the latch facility.
Improve the documentation around weak-memory-ordering risks, and do a pass
of general editorialization on the comments in the latch code. Make the
Windows latch code more like the Unix latch code where feasible; in
particular provide the same Assert checks in both implementations.
Fix poorly-placed WaitLatch call in syncrep.c.
This patch resolves, for the moment, concerns around weak-memory-ordering
bugs in latch-related code: we have documented the restrictions and checked
that existing calls meet them. In 9.2 I hope that we will install suitable
memory barrier instructions in SetLatch/ResetLatch, so that their callers
don't need to be quite so careful.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/4e15a4db5e65e43271f8d20750d6500ab12632d0
Modified Files
--------------
src/backend/port/unix_latch.c | 166 ++++++++++++++++++-------------------
src/backend/port/win32_latch.c | 49 ++++++------
src/backend/replication/syncrep.c | 20 +++--
src/backend/storage/lmgr/proc.c | 2 +-
src/include/storage/latch.h | 70 +++++++++++++++-
5 files changed, 184 insertions(+), 123 deletions(-)