Commit a042ba2b authored by Thomas Munro's avatar Thomas Munro

Introduce symbolic names for FeBeWaitSet positions.

Previously we used 0 and 1 to refer to the socket and latch in far flung
parts of the tree, without any explanation.  Also use PGINVALID_SOCKET
rather than -1 in a couple of places that didn't already do that.
Reviewed-by: default avatarKyotaro Horiguchi <horikyota.ntt@gmail.com>
Discussion: https://postgr.es/m/CA%2BhUKGJAC4Oqao%3DqforhNey20J8CiG2R%3DoBPqvfR0vOJrFysGw%40mail.gmail.com
parent cf54e04b
...@@ -180,7 +180,7 @@ retry: ...@@ -180,7 +180,7 @@ retry:
Assert(waitfor); Assert(waitfor);
ModifyWaitEvent(FeBeWaitSet, 0, waitfor, NULL); ModifyWaitEvent(FeBeWaitSet, FeBeWaitSetSocketPos, waitfor, NULL);
WaitEventSetWait(FeBeWaitSet, -1 /* no timeout */ , &event, 1, WaitEventSetWait(FeBeWaitSet, -1 /* no timeout */ , &event, 1,
WAIT_EVENT_CLIENT_READ); WAIT_EVENT_CLIENT_READ);
...@@ -292,7 +292,7 @@ retry: ...@@ -292,7 +292,7 @@ retry:
Assert(waitfor); Assert(waitfor);
ModifyWaitEvent(FeBeWaitSet, 0, waitfor, NULL); ModifyWaitEvent(FeBeWaitSet, FeBeWaitSetSocketPos, waitfor, NULL);
WaitEventSetWait(FeBeWaitSet, -1 /* no timeout */ , &event, 1, WaitEventSetWait(FeBeWaitSet, -1 /* no timeout */ , &event, 1,
WAIT_EVENT_CLIENT_WRITE); WAIT_EVENT_CLIENT_WRITE);
......
...@@ -191,6 +191,9 @@ WaitEventSet *FeBeWaitSet; ...@@ -191,6 +191,9 @@ WaitEventSet *FeBeWaitSet;
void void
pq_init(void) pq_init(void)
{ {
int socket_pos PG_USED_FOR_ASSERTS_ONLY;
int latch_pos PG_USED_FOR_ASSERTS_ONLY;
/* initialize state variables */ /* initialize state variables */
PqSendBufferSize = PQ_SEND_BUFFER_SIZE; PqSendBufferSize = PQ_SEND_BUFFER_SIZE;
PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize); PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize);
...@@ -219,10 +222,19 @@ pq_init(void) ...@@ -219,10 +222,19 @@ pq_init(void)
#endif #endif
FeBeWaitSet = CreateWaitEventSet(TopMemoryContext, 3); FeBeWaitSet = CreateWaitEventSet(TopMemoryContext, 3);
AddWaitEventToSet(FeBeWaitSet, WL_SOCKET_WRITEABLE, MyProcPort->sock, socket_pos = AddWaitEventToSet(FeBeWaitSet, WL_SOCKET_WRITEABLE,
MyProcPort->sock, NULL, NULL);
latch_pos = AddWaitEventToSet(FeBeWaitSet, WL_LATCH_SET, PGINVALID_SOCKET,
MyLatch, NULL);
AddWaitEventToSet(FeBeWaitSet, WL_POSTMASTER_DEATH, PGINVALID_SOCKET,
NULL, NULL); NULL, NULL);
AddWaitEventToSet(FeBeWaitSet, WL_LATCH_SET, -1, MyLatch, NULL);
AddWaitEventToSet(FeBeWaitSet, WL_POSTMASTER_DEATH, -1, NULL, NULL); /*
* The event positions match the order we added them, but let's sanity
* check them to be sure.
*/
Assert(socket_pos == FeBeWaitSetSocketPos);
Assert(latch_pos == FeBeWaitSetLatchPos);
} }
/* -------------------------------- /* --------------------------------
......
...@@ -202,7 +202,8 @@ SwitchToSharedLatch(void) ...@@ -202,7 +202,8 @@ SwitchToSharedLatch(void)
MyLatch = &MyProc->procLatch; MyLatch = &MyProc->procLatch;
if (FeBeWaitSet) if (FeBeWaitSet)
ModifyWaitEvent(FeBeWaitSet, 1, WL_LATCH_SET, MyLatch); ModifyWaitEvent(FeBeWaitSet, FeBeWaitSetLatchPos, WL_LATCH_SET,
MyLatch);
/* /*
* Set the shared latch as the local one might have been set. This * Set the shared latch as the local one might have been set. This
...@@ -221,7 +222,8 @@ SwitchBackToLocalLatch(void) ...@@ -221,7 +222,8 @@ SwitchBackToLocalLatch(void)
MyLatch = &LocalLatchData; MyLatch = &LocalLatchData;
if (FeBeWaitSet) if (FeBeWaitSet)
ModifyWaitEvent(FeBeWaitSet, 1, WL_LATCH_SET, MyLatch); ModifyWaitEvent(FeBeWaitSet, FeBeWaitSetLatchPos, WL_LATCH_SET,
MyLatch);
SetLatch(MyLatch); SetLatch(MyLatch);
} }
......
...@@ -55,6 +55,9 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods; ...@@ -55,6 +55,9 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
*/ */
extern WaitEventSet *FeBeWaitSet; extern WaitEventSet *FeBeWaitSet;
#define FeBeWaitSetSocketPos 0
#define FeBeWaitSetLatchPos 1
extern int StreamServerPort(int family, const char *hostName, extern int StreamServerPort(int family, const char *hostName,
unsigned short portNumber, const char *unixSocketDir, unsigned short portNumber, const char *unixSocketDir,
pgsocket ListenSocket[], int MaxListen); pgsocket ListenSocket[], int MaxListen);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment