PostgreSQL Source Code
git master
pqsignal.c
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* pqsignal.c
4
* Backend signal(2) support (see also src/port/pqsignal.c)
5
*
6
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
* Portions Copyright (c) 1994, Regents of the University of California
8
*
9
*
10
* IDENTIFICATION
11
* src/backend/libpq/pqsignal.c
12
*
13
* ------------------------------------------------------------------------
14
*/
15
16
#include "
postgres.h
"
17
18
#include "
libpq/pqsignal.h
"
19
20
21
/* Global variables */
22
sigset_t
UnBlockSig
,
23
BlockSig
,
24
StartupBlockSig
;
25
26
27
/*
28
* Initialize BlockSig, UnBlockSig, and StartupBlockSig.
29
*
30
* BlockSig is the set of signals to block when we are trying to block
31
* signals. This includes all signals we normally expect to get, but NOT
32
* signals that should never be turned off.
33
*
34
* StartupBlockSig is the set of signals to block during startup packet
35
* collection; it's essentially BlockSig minus SIGTERM, SIGQUIT, SIGALRM.
36
*
37
* UnBlockSig is the set of signals to block when we don't want to block
38
* signals.
39
*/
40
void
41
pqinitmask
(
void
)
42
{
43
sigemptyset(&
UnBlockSig
);
44
45
/* Note: InitializeLatchSupport() modifies UnBlockSig. */
46
47
/* First set all signals, then clear some. */
48
sigfillset(&
BlockSig
);
49
sigfillset(&
StartupBlockSig
);
50
51
/*
52
* Unmark those signals that should never be blocked. Some of these signal
53
* names don't exist on all platforms. Most do, but might as well ifdef
54
* them all for consistency...
55
*/
56
#ifdef SIGTRAP
57
sigdelset(&
BlockSig
,
SIGTRAP
);
58
sigdelset(&
StartupBlockSig
,
SIGTRAP
);
59
#endif
60
#ifdef SIGABRT
61
sigdelset(&
BlockSig
,
SIGABRT
);
62
sigdelset(&
StartupBlockSig
,
SIGABRT
);
63
#endif
64
#ifdef SIGILL
65
sigdelset(&
BlockSig
, SIGILL);
66
sigdelset(&
StartupBlockSig
, SIGILL);
67
#endif
68
#ifdef SIGFPE
69
sigdelset(&
BlockSig
, SIGFPE);
70
sigdelset(&
StartupBlockSig
, SIGFPE);
71
#endif
72
#ifdef SIGSEGV
73
sigdelset(&
BlockSig
, SIGSEGV);
74
sigdelset(&
StartupBlockSig
, SIGSEGV);
75
#endif
76
#ifdef SIGBUS
77
sigdelset(&
BlockSig
, SIGBUS);
78
sigdelset(&
StartupBlockSig
, SIGBUS);
79
#endif
80
#ifdef SIGSYS
81
sigdelset(&
BlockSig
, SIGSYS);
82
sigdelset(&
StartupBlockSig
, SIGSYS);
83
#endif
84
#ifdef SIGCONT
85
sigdelset(&
BlockSig
,
SIGCONT
);
86
sigdelset(&
StartupBlockSig
,
SIGCONT
);
87
#endif
88
89
/* Signals unique to startup */
90
#ifdef SIGQUIT
91
sigdelset(&
StartupBlockSig
,
SIGQUIT
);
92
#endif
93
#ifdef SIGTERM
94
sigdelset(&
StartupBlockSig
, SIGTERM);
95
#endif
96
#ifdef SIGALRM
97
sigdelset(&
StartupBlockSig
,
SIGALRM
);
98
#endif
99
}
StartupBlockSig
sigset_t StartupBlockSig
Definition:
pqsignal.c:24
pqinitmask
void pqinitmask(void)
Definition:
pqsignal.c:41
UnBlockSig
sigset_t UnBlockSig
Definition:
pqsignal.c:22
BlockSig
sigset_t BlockSig
Definition:
pqsignal.c:23
postgres.h
pqsignal.h
SIGCONT
#define SIGCONT
Definition:
win32_port.h:177
SIGQUIT
#define SIGQUIT
Definition:
win32_port.h:169
SIGTRAP
#define SIGTRAP
Definition:
win32_port.h:170
SIGALRM
#define SIGALRM
Definition:
win32_port.h:174
SIGABRT
#define SIGABRT
Definition:
win32_port.h:171
src
backend
libpq
pqsignal.c
Generated on Sat Sep 7 2024 18:13:16 for PostgreSQL Source Code by
1.9.1