1 /*-------------------------------------------------------------------------
4 * Routines for interprocess signalling
7 * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/storage/procsignal.h
12 *-------------------------------------------------------------------------
17 #include "storage/backendid.h"
21 * Reasons for signalling a Postgres child process (a backend or an auxiliary
22 * process, like checkpointer). We can cope with concurrent signals for different
23 * reasons. However, if the same reason is signaled multiple times in quick
24 * succession, the process is likely to observe only one notification of it.
25 * This is okay for the present uses.
27 * Also, because of race conditions, it's important that all the signals be
28 * defined so that no harm is done if a process mistakenly receives one.
32 PROCSIG_CATCHUP_INTERRUPT, /* sinval catchup interrupt */
33 PROCSIG_NOTIFY_INTERRUPT, /* listen/notify interrupt */
34 PROCSIG_PARALLEL_MESSAGE, /* message from cooperating parallel backend */
36 /* Recovery conflict reasons */
37 PROCSIG_RECOVERY_CONFLICT_DATABASE,
38 PROCSIG_RECOVERY_CONFLICT_TABLESPACE,
39 PROCSIG_RECOVERY_CONFLICT_LOCK,
40 PROCSIG_RECOVERY_CONFLICT_SNAPSHOT,
41 PROCSIG_RECOVERY_CONFLICT_BUFFERPIN,
42 PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
44 NUM_PROCSIGNALS /* Must be last! */
48 * prototypes for functions in procsignal.c
50 extern Size ProcSignalShmemSize(void);
51 extern void ProcSignalShmemInit(void);
53 extern void ProcSignalInit(int pss_idx);
54 extern int SendProcSignal(pid_t pid, ProcSignalReason reason,
57 extern void procsignal_sigusr1_handler(SIGNAL_ARGS);
59 #endif /* PROCSIGNAL_H */