PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
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-2026, 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: InitializeWaitEventSupport() 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
fb
static int fb(int x)
Definition
preproc-init.c:92
SIGCONT
#define SIGCONT
Definition
win32_port.h:167
SIGQUIT
#define SIGQUIT
Definition
win32_port.h:159
SIGTRAP
#define SIGTRAP
Definition
win32_port.h:160
SIGALRM
#define SIGALRM
Definition
win32_port.h:164
SIGABRT
#define SIGABRT
Definition
win32_port.h:161
src
backend
libpq
pqsignal.c
Generated on Tue Jan 27 2026 06:13:18 for PostgreSQL Source Code by
1.9.8