1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-08 22:02:03 +03:00

Remove volatile from latch API

This was no longer useful since the latch functions use memory
barriers already, which are also compiler barriers, and volatile does
not help with cross-process access.

Discussion: https://www.postgresql.org/message-id/flat/20190218202511.qsfpuj5sy4dbezcw%40alap3.anarazel.de#18783c27d73e9e40009c82f6e0df0974
This commit is contained in:
Peter Eisentraut 2019-02-25 09:24:15 +01:00
parent 754b90f657
commit 278584b526
2 changed files with 17 additions and 17 deletions

View File

@ -225,7 +225,7 @@ InitializeLatchSupport(void)
* Initialize a process-local latch. * Initialize a process-local latch.
*/ */
void void
InitLatch(volatile Latch *latch) InitLatch(Latch *latch)
{ {
latch->is_set = false; latch->is_set = false;
latch->owner_pid = MyProcPid; latch->owner_pid = MyProcPid;
@ -257,7 +257,7 @@ InitLatch(volatile Latch *latch)
* process references to postmaster-private latches or WaitEventSets. * process references to postmaster-private latches or WaitEventSets.
*/ */
void void
InitSharedLatch(volatile Latch *latch) InitSharedLatch(Latch *latch)
{ {
#ifdef WIN32 #ifdef WIN32
SECURITY_ATTRIBUTES sa; SECURITY_ATTRIBUTES sa;
@ -293,7 +293,7 @@ InitSharedLatch(volatile Latch *latch)
* as shared latches use SIGUSR1 for inter-process communication. * as shared latches use SIGUSR1 for inter-process communication.
*/ */
void void
OwnLatch(volatile Latch *latch) OwnLatch(Latch *latch)
{ {
/* Sanity checks */ /* Sanity checks */
Assert(latch->is_shared); Assert(latch->is_shared);
@ -313,7 +313,7 @@ OwnLatch(volatile Latch *latch)
* Disown a shared latch currently owned by the current process. * Disown a shared latch currently owned by the current process.
*/ */
void void
DisownLatch(volatile Latch *latch) DisownLatch(Latch *latch)
{ {
Assert(latch->is_shared); Assert(latch->is_shared);
Assert(latch->owner_pid == MyProcPid); Assert(latch->owner_pid == MyProcPid);
@ -341,7 +341,7 @@ DisownLatch(volatile Latch *latch)
* we return all of them in one call, but we will return at least one. * we return all of them in one call, but we will return at least one.
*/ */
int int
WaitLatch(volatile Latch *latch, int wakeEvents, long timeout, WaitLatch(Latch *latch, int wakeEvents, long timeout,
uint32 wait_event_info) uint32 wait_event_info)
{ {
return WaitLatchOrSocket(latch, wakeEvents, PGINVALID_SOCKET, timeout, return WaitLatchOrSocket(latch, wakeEvents, PGINVALID_SOCKET, timeout,
@ -366,7 +366,7 @@ WaitLatch(volatile Latch *latch, int wakeEvents, long timeout,
* WaitEventSet instead; that's more efficient. * WaitEventSet instead; that's more efficient.
*/ */
int int
WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock, WaitLatchOrSocket(Latch *latch, int wakeEvents, pgsocket sock,
long timeout, uint32 wait_event_info) long timeout, uint32 wait_event_info)
{ {
int ret = 0; int ret = 0;
@ -381,7 +381,7 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
if (wakeEvents & WL_LATCH_SET) if (wakeEvents & WL_LATCH_SET)
AddWaitEventToSet(set, WL_LATCH_SET, PGINVALID_SOCKET, AddWaitEventToSet(set, WL_LATCH_SET, PGINVALID_SOCKET,
(Latch *) latch, NULL); latch, NULL);
/* Postmaster-managed callers must handle postmaster death somehow. */ /* Postmaster-managed callers must handle postmaster death somehow. */
Assert(!IsUnderPostmaster || Assert(!IsUnderPostmaster ||
@ -433,7 +433,7 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
* throwing an error is not a good idea. * throwing an error is not a good idea.
*/ */
void void
SetLatch(volatile Latch *latch) SetLatch(Latch *latch)
{ {
#ifndef WIN32 #ifndef WIN32
pid_t owner_pid; pid_t owner_pid;
@ -516,7 +516,7 @@ SetLatch(volatile Latch *latch)
* the latch is set again before the WaitLatch call. * the latch is set again before the WaitLatch call.
*/ */
void void
ResetLatch(volatile Latch *latch) ResetLatch(Latch *latch)
{ {
/* Only the owner should reset the latch */ /* Only the owner should reset the latch */
Assert(latch->owner_pid == MyProcPid); Assert(latch->owner_pid == MyProcPid);

View File

@ -156,12 +156,12 @@ typedef struct WaitEventSet WaitEventSet;
* prototypes for functions in latch.c * prototypes for functions in latch.c
*/ */
extern void InitializeLatchSupport(void); extern void InitializeLatchSupport(void);
extern void InitLatch(volatile Latch *latch); extern void InitLatch(Latch *latch);
extern void InitSharedLatch(volatile Latch *latch); extern void InitSharedLatch(Latch *latch);
extern void OwnLatch(volatile Latch *latch); extern void OwnLatch(Latch *latch);
extern void DisownLatch(volatile Latch *latch); extern void DisownLatch(Latch *latch);
extern void SetLatch(volatile Latch *latch); extern void SetLatch(Latch *latch);
extern void ResetLatch(volatile Latch *latch); extern void ResetLatch(Latch *latch);
extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents); extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents);
extern void FreeWaitEventSet(WaitEventSet *set); extern void FreeWaitEventSet(WaitEventSet *set);
@ -172,9 +172,9 @@ extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *la
extern int WaitEventSetWait(WaitEventSet *set, long timeout, extern int WaitEventSetWait(WaitEventSet *set, long timeout,
WaitEvent *occurred_events, int nevents, WaitEvent *occurred_events, int nevents,
uint32 wait_event_info); uint32 wait_event_info);
extern int WaitLatch(volatile Latch *latch, int wakeEvents, long timeout, extern int WaitLatch(Latch *latch, int wakeEvents, long timeout,
uint32 wait_event_info); uint32 wait_event_info);
extern int WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, extern int WaitLatchOrSocket(Latch *latch, int wakeEvents,
pgsocket sock, long timeout, uint32 wait_event_info); pgsocket sock, long timeout, uint32 wait_event_info);
/* /*