Documentation improvement and minor code cleanups for the latch facility.
Tom Lane <tgl@sss.pgh.pa.us>
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.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/port/unix_latch.c | modified | +79 −87 |
| src/backend/port/win32_latch.c | modified | +25 −24 |
| src/backend/replication/syncrep.c | modified | +13 −7 |
| src/backend/storage/lmgr/proc.c | modified | +1 −1 |
| src/include/storage/latch.h | modified | +66 −4 |