From 14ed7735f5bb5275da13891c4bb106c198d00b53 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 16 Dec 2010 17:57:57 -0500 Subject: [PATCH] Improve comments around startup_hacks() code. These comments were not updated when we added the EXEC_BACKEND mechanism for Windows, even though it rendered them inaccurate. Also unify two unnecessarily-separate #ifdef __alpha code blocks. --- src/backend/main/main.c | 45 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/backend/main/main.c b/src/backend/main/main.c index 6cb70f2d04..cad78d6d66 100644 --- a/src/backend/main/main.c +++ b/src/backend/main/main.c @@ -4,8 +4,9 @@ * Stub main() routine for the postgres executable. * * This does some essential startup tasks for any incarnation of postgres - * (postmaster, standalone backend, or standalone bootstrap mode) and then - * dispatches to the proper FooMain() routine for the incarnation. + * (postmaster, standalone backend, standalone bootstrap process, or a + * separately exec'd child of a postmaster) and then dispatches to the + * proper FooMain() routine for the incarnation. * * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group @@ -54,7 +55,9 @@ static void check_root(const char *progname); static char *get_current_username(const char *progname); - +/* + * Any Postgres server process begins execution here. + */ int main(int argc, char *argv[]) { @@ -192,10 +195,10 @@ main(int argc, char *argv[]) /* * Place platform-specific startup hacks here. This is the right - * place to put code that must be executed early in launch of either a - * postmaster, a standalone backend, or a standalone bootstrap run. - * Note that this code will NOT be executed when a backend or - * sub-bootstrap run is forked by the server. + * place to put code that must be executed early in the launch of any new + * server process. Note that this code will NOT be executed when a backend + * or sub-bootstrap process is forked, unless we are in a fork/exec + * environment (ie EXEC_BACKEND is defined). * * XXX The need for code here is proof that the platform in question * is too brain-dead to provide a standard C execution environment @@ -204,17 +207,10 @@ main(int argc, char *argv[]) static void startup_hacks(const char *progname) { -#if defined(__alpha) /* no __alpha__ ? */ -#ifdef NOFIXADE - int buffer[] = {SSIN_UACPROC, UAC_SIGBUS | UAC_NOPRINT}; -#endif -#endif /* __alpha */ - - /* * On some platforms, unaligned memory accesses result in a kernel trap; * the default kernel behavior is to emulate the memory access, but this - * results in a significant performance penalty. We ought to fix PG not to + * results in a significant performance penalty. We want PG never to * make such unaligned memory accesses, so this code disables the kernel * emulation: unaligned accesses will result in SIGBUS instead. */ @@ -225,14 +221,21 @@ startup_hacks(const char *progname) #endif #if defined(__alpha) /* no __alpha__ ? */ - if (setsysinfo(SSI_NVPAIRS, buffer, 1, (caddr_t) NULL, - (unsigned long) NULL) < 0) - write_stderr("%s: setsysinfo failed: %s\n", - progname, strerror(errno)); -#endif + { + int buffer[] = {SSIN_UACPROC, UAC_SIGBUS | UAC_NOPRINT}; + + if (setsysinfo(SSI_NVPAIRS, buffer, 1, (caddr_t) NULL, + (unsigned long) NULL) < 0) + write_stderr("%s: setsysinfo failed: %s\n", + progname, strerror(errno)); + } +#endif /* __alpha */ + #endif /* NOFIXADE */ - + /* + * Windows-specific execution environment hacking. + */ #ifdef WIN32 { WSADATA wsaData;