diff options
author | Neil Conway <neilc@samurai.com> | 2005-03-10 07:14:03 +0000 |
---|---|---|
committer | Neil Conway <neilc@samurai.com> | 2005-03-10 07:14:03 +0000 |
commit | 164adc4d3924d5f0310dba24d4035313ca69245d (patch) | |
tree | 4a7dfc4714ac642f31b1a60d31ecdc4ba1d59065 /src/backend/postmaster/syslogger.c | |
parent | e829f822239186df59829afae5cc2769b783630b (diff) | |
download | postgresql-164adc4d3924d5f0310dba24d4035313ca69245d.tar.gz postgresql-164adc4d3924d5f0310dba24d4035313ca69245d.zip |
Refactor fork()-related code. We need to do various housekeeping tasks
before we can invoke fork() -- flush stdio buffers, save and restore the
profiling timer on Linux with LINUX_PROFILE, and handle BeOS stuff. This
patch moves that code into a single function, fork_process(), instead of
duplicating it at the various callsites of fork().
This patch doesn't address the EXEC_BACKEND case; there is room for
further cleanup there.
Diffstat (limited to 'src/backend/postmaster/syslogger.c')
-rw-r--r-- | src/backend/postmaster/syslogger.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index e057666370a..87951a6961c 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -18,7 +18,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.12 2005/01/01 20:44:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.13 2005/03/10 07:14:03 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -33,6 +33,7 @@ #include "libpq/pqsignal.h" #include "miscadmin.h" +#include "postmaster/fork_process.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "pgtime.h" @@ -451,28 +452,13 @@ SysLogger_Start(void) pfree(filename); - /* - * Now we can fork off the syslogger subprocess. - */ - fflush(stdout); - fflush(stderr); - -#ifdef __BEOS__ - /* Specific beos actions before backend startup */ - beos_before_backend_startup(); -#endif - #ifdef EXEC_BACKEND switch ((sysloggerPid = syslogger_forkexec())) #else - switch ((sysloggerPid = fork())) + switch ((sysloggerPid = fork_process())) #endif { case -1: -#ifdef __BEOS__ - /* Specific beos actions */ - beos_backend_startup_failed(); -#endif ereport(LOG, (errmsg("could not fork system logger: %m"))); return 0; @@ -480,10 +466,6 @@ SysLogger_Start(void) #ifndef EXEC_BACKEND case 0: /* in postmaster child ... */ -#ifdef __BEOS__ - /* Specific beos actions after backend startup */ - beos_backend_startup(); -#endif /* Close the postmaster's sockets */ ClosePostmasterPorts(true); |