mirror of
https://github.com/postgres/postgres.git
synced 2025-09-06 13:46:51 +03:00
Add a default local latch for use in signal handlers.
To do so, move InitializeLatchSupport() into the new common process initialization functions, and add a new global variable MyLatch. MyLatch is usable as soon InitPostmasterChild() has been called (i.e. very early during startup). Initially it points to a process local latch that exists in all processes. InitProcess/InitAuxiliaryProcess then replaces that local latch with PGPROC->procLatch. During shutdown the reverse happens. This is primarily advantageous for two reasons: For one it simplifies dealing with the shared process latch, especially in signal handlers, because instead of having to check for MyProc, MyLatch can be used unconditionally. For another, a later patch that makes FEs/BE communication use latches, now can rely on the existence of a latch, even before having gone through InitProcess. Discussion: 20140927191243.GD5423@alap3.anarazel.de
This commit is contained in:
@@ -40,6 +40,15 @@ struct Port *MyProcPort;
|
||||
long MyCancelKey;
|
||||
int MyPMChildSlot;
|
||||
|
||||
/*
|
||||
* MyLatch points to the latch that should be used for signal handling by the
|
||||
* current process. It will either point to a process local latch if the
|
||||
* current process does not have a PGPROC entry in that moment, or to
|
||||
* PGPROC->procLatch if it has. Thus it can always be used in signal handlers,
|
||||
* without checking for its existence.
|
||||
*/
|
||||
struct Latch *MyLatch;
|
||||
|
||||
/*
|
||||
* DataDir is the absolute path to the top level of the PGDATA directory tree.
|
||||
* Except during early startup, this is also the server's working directory;
|
||||
|
Reference in New Issue
Block a user