aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/pqsignal.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2013-03-17 12:06:42 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2013-03-17 12:06:42 -0400
commitda5aeccf64b37a8e9bd3cb605848590595dbcbf8 (patch)
tree5e16817356f6ae9b0bc3bf29a7d814da9a40bf8a /src/backend/libpq/pqsignal.c
parentd43837d03067487560af481474ae985df894f786 (diff)
downloadpostgresql-da5aeccf64b37a8e9bd3cb605848590595dbcbf8.tar.gz
postgresql-da5aeccf64b37a8e9bd3cb605848590595dbcbf8.zip
Move pqsignal() to libpgport.
We had two copies of this function in the backend and libpq, which was already pretty bogus, but it turns out that we need it in some other programs that don't use libpq (such as pg_test_fsync). So put it where it probably should have been all along. The signal-mask-initialization support in src/backend/libpq/pqsignal.c stays where it is, though, since we only need that in the backend.
Diffstat (limited to 'src/backend/libpq/pqsignal.c')
-rw-r--r--src/backend/libpq/pqsignal.c67
1 files changed, 3 insertions, 64 deletions
diff --git a/src/backend/libpq/pqsignal.c b/src/backend/libpq/pqsignal.c
index d088daeb7dd..b621ba7addc 100644
--- a/src/backend/libpq/pqsignal.c
+++ b/src/backend/libpq/pqsignal.c
@@ -1,8 +1,7 @@
/*-------------------------------------------------------------------------
*
* pqsignal.c
- * reliable BSD-style signal(2) routine stolen from RWW who stole it
- * from Stevens...
+ * Backend signal(2) support (see also src/port/pqsignal.c)
*
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
@@ -11,38 +10,11 @@
* IDENTIFICATION
* src/backend/libpq/pqsignal.c
*
- * NOTES
- * This shouldn't be in libpq, but the monitor and some other
- * things need it...
- *
- * A NOTE ABOUT SIGNAL HANDLING ACROSS THE VARIOUS PLATFORMS.
- *
- * pg_config.h defines the macro HAVE_POSIX_SIGNALS for some platforms and
- * not for others. This file and pqsignal.h use that macro to decide
- * how to handle signalling.
- *
- * signal(2) handling - this is here because it affects some of
- * the frontend commands as well as the backend processes.
- *
- * Ultrix and SunOS provide BSD signal(2) semantics by default.
- *
- * SVID2 and POSIX signal(2) semantics differ from BSD signal(2)
- * semantics. We can use the POSIX sigaction(2) on systems that
- * allow us to request restartable signals (SA_RESTART).
- *
- * Some systems don't allow restartable signals at all unless we
- * link to a special BSD library.
- *
- * We devoutly hope that there aren't any systems that provide
- * neither POSIX signals nor BSD signals. The alternative
- * is to do signal-handler reinstallation, which doesn't work well
- * at all.
- * ------------------------------------------------------------------------*/
+ * ------------------------------------------------------------------------
+ */
#include "postgres.h"
-#include <signal.h>
-
#include "libpq/pqsignal.h"
@@ -145,36 +117,3 @@ pqinitmask(void)
sigmask(SIGWINCH) | sigmask(SIGFPE);
#endif
}
-
-
-/* Win32 signal handling is in backend/port/win32/signal.c */
-#ifndef WIN32
-
-/*
- * Set up a signal handler
- */
-pqsigfunc
-pqsignal(int signo, pqsigfunc func)
-{
-#if !defined(HAVE_POSIX_SIGNALS)
- return signal(signo, func);
-#else
- struct sigaction act,
- oact;
-
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
- if (signo != SIGALRM)
- act.sa_flags |= SA_RESTART;
-#ifdef SA_NOCLDSTOP
- if (signo == SIGCHLD)
- act.sa_flags |= SA_NOCLDSTOP;
-#endif
- if (sigaction(signo, &act, &oact) < 0)
- return SIG_ERR;
- return oact.sa_handler;
-#endif /* !HAVE_POSIX_SIGNALS */
-}
-
-#endif /* WIN32 */