| 1 | /*------------------------------------------------------------------------- | 
|---|
| 2 | * | 
|---|
| 3 | * procsignal.h | 
|---|
| 4 | *	  Routines for interprocess signalling | 
|---|
| 5 | * | 
|---|
| 6 | * | 
|---|
| 7 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group | 
|---|
| 8 | * Portions Copyright (c) 1994, Regents of the University of California | 
|---|
| 9 | * | 
|---|
| 10 | * src/include/storage/procsignal.h | 
|---|
| 11 | * | 
|---|
| 12 | *------------------------------------------------------------------------- | 
|---|
| 13 | */ | 
|---|
| 14 | #ifndef PROCSIGNAL_H | 
|---|
| 15 | #define PROCSIGNAL_H | 
|---|
| 16 |  | 
|---|
| 17 | #include "storage/backendid.h" | 
|---|
| 18 |  | 
|---|
| 19 |  | 
|---|
| 20 | /* | 
|---|
| 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. | 
|---|
| 26 | * | 
|---|
| 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. | 
|---|
| 29 | */ | 
|---|
| 30 | typedef enum | 
|---|
| 31 | { | 
|---|
| 32 | PROCSIG_CATCHUP_INTERRUPT,	/* sinval catchup interrupt */ | 
|---|
| 33 | PROCSIG_NOTIFY_INTERRUPT,	/* listen/notify interrupt */ | 
|---|
| 34 | PROCSIG_PARALLEL_MESSAGE,	/* message from cooperating parallel backend */ | 
|---|
| 35 | PROCSIG_WALSND_INIT_STOPPING,	/* ask walsenders to prepare for shutdown  */ | 
|---|
| 36 |  | 
|---|
| 37 | /* Recovery conflict reasons */ | 
|---|
| 38 | PROCSIG_RECOVERY_CONFLICT_DATABASE, | 
|---|
| 39 | PROCSIG_RECOVERY_CONFLICT_TABLESPACE, | 
|---|
| 40 | PROCSIG_RECOVERY_CONFLICT_LOCK, | 
|---|
| 41 | PROCSIG_RECOVERY_CONFLICT_SNAPSHOT, | 
|---|
| 42 | PROCSIG_RECOVERY_CONFLICT_BUFFERPIN, | 
|---|
| 43 | PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, | 
|---|
| 44 |  | 
|---|
| 45 | NUM_PROCSIGNALS				/* Must be last! */ | 
|---|
| 46 | } ProcSignalReason; | 
|---|
| 47 |  | 
|---|
| 48 | /* | 
|---|
| 49 | * prototypes for functions in procsignal.c | 
|---|
| 50 | */ | 
|---|
| 51 | extern Size ProcSignalShmemSize(void); | 
|---|
| 52 | extern void ProcSignalShmemInit(void); | 
|---|
| 53 |  | 
|---|
| 54 | extern void ProcSignalInit(int pss_idx); | 
|---|
| 55 | extern int	SendProcSignal(pid_t pid, ProcSignalReason reason, | 
|---|
| 56 | BackendId backendId); | 
|---|
| 57 |  | 
|---|
| 58 | extern void procsignal_sigusr1_handler(SIGNAL_ARGS); | 
|---|
| 59 |  | 
|---|
| 60 | #endif							/* PROCSIGNAL_H */ | 
|---|
| 61 |  | 
|---|