process startup: Centralize pgwin32_signal_initialize() calls.
For one, the existing location lead to somewhat awkward code in main(). For another, the new location is easier to understand anyway. Author: Andres Freund <andres@anarazel.de> Reviewed-By: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Reviewed-By: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/20210802164124.ufo5buo4apl6yuvs@alap3.anarazel.de
This commit is contained in:
parent
f8dd4ecb0b
commit
07bf378509
@ -181,35 +181,24 @@ main(int argc, char *argv[])
|
||||
* Dispatch to one of various subprograms depending on first argument.
|
||||
*/
|
||||
|
||||
#ifdef EXEC_BACKEND
|
||||
if (argc > 1 && strncmp(argv[1], "--fork", 6) == 0)
|
||||
SubPostmasterMain(argc, argv); /* does not return */
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
/*
|
||||
* Start our win32 signal implementation
|
||||
*
|
||||
* SubPostmasterMain() will do this for itself, but the remaining modes
|
||||
* need it here
|
||||
*/
|
||||
pgwin32_signal_initialize();
|
||||
#endif
|
||||
|
||||
if (argc > 1 && strcmp(argv[1], "--check") == 0)
|
||||
BootstrapModeMain(argc, argv, true);
|
||||
else if (argc > 1 && strcmp(argv[1], "--boot") == 0)
|
||||
BootstrapModeMain(argc, argv, false);
|
||||
#ifdef EXEC_BACKEND
|
||||
else if (argc > 1 && strncmp(argv[1], "--fork", 6) == 0)
|
||||
SubPostmasterMain(argc, argv);
|
||||
#endif
|
||||
else if (argc > 1 && strcmp(argv[1], "--describe-config") == 0)
|
||||
GucInfoMain(); /* does not return */
|
||||
GucInfoMain();
|
||||
else if (argc > 1 && strcmp(argv[1], "--single") == 0)
|
||||
PostgresMain(argc, argv,
|
||||
NULL, /* no dbname */
|
||||
strdup(get_user_name_or_exit(progname))); /* does not return */
|
||||
strdup(get_user_name_or_exit(progname)));
|
||||
else
|
||||
PostmasterMain(argc, argv); /* does not return */
|
||||
abort(); /* should not get here */
|
||||
PostmasterMain(argc, argv);
|
||||
/* the functions above should not return */
|
||||
abort();
|
||||
}
|
||||
|
||||
|
||||
|
@ -4905,15 +4905,6 @@ SubPostmasterMain(int argc, char *argv[])
|
||||
/* Close the postmaster's sockets (as soon as we know them) */
|
||||
ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0);
|
||||
|
||||
/*
|
||||
* Start our win32 signal implementation. This has to be done after we
|
||||
* read the backend variables, because we need to pick up the signal pipe
|
||||
* from the parent process.
|
||||
*/
|
||||
#ifdef WIN32
|
||||
pgwin32_signal_initialize();
|
||||
#endif
|
||||
|
||||
/* Setup as postmaster child */
|
||||
InitPostmasterChild();
|
||||
|
||||
|
@ -87,13 +87,23 @@ bool IgnoreSystemIndexes = false;
|
||||
/*
|
||||
* Initialize the basic environment for a postmaster child
|
||||
*
|
||||
* Should be called as early as possible after the child's startup.
|
||||
* Should be called as early as possible after the child's startup. However,
|
||||
* on EXEC_BACKEND builds it does need to be after read_backend_variables().
|
||||
*/
|
||||
void
|
||||
InitPostmasterChild(void)
|
||||
{
|
||||
IsUnderPostmaster = true; /* we are a postmaster subprocess now */
|
||||
|
||||
/*
|
||||
* Start our win32 signal implementation. This has to be done after we
|
||||
* read the backend variables, because we need to pick up the signal pipe
|
||||
* from the parent process.
|
||||
*/
|
||||
#ifdef WIN32
|
||||
pgwin32_signal_initialize();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Set reference point for stack-depth checking. We re-do that even in the
|
||||
* !EXEC_BACKEND case, because there are some edge cases where processes
|
||||
@ -166,6 +176,13 @@ InitStandaloneProcess(const char *argv0)
|
||||
{
|
||||
Assert(!IsPostmasterEnvironment);
|
||||
|
||||
/*
|
||||
* Start our win32 signal implementation
|
||||
*/
|
||||
#ifdef WIN32
|
||||
pgwin32_signal_initialize();
|
||||
#endif
|
||||
|
||||
InitProcessGlobals();
|
||||
|
||||
/* Initialize process-local latch support */
|
||||
|
Loading…
x
Reference in New Issue
Block a user