*
* pmsignal.h
* routines for signaling the postmaster from its child processes
*
*
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/storage/pmsignal.h
*
* -------------------------------------------------------------------------
*/
#ifndef PMSIGNAL_H
#define PMSIGNAL_H
* Reasons for signaling the postmaster. We can cope with simultaneous
* signals for different reasons. If the same reason is signaled multiple
* times in quick succession, however, the postmaster is likely to observe
* only one notification of it. This is okay for the present uses.
*/
typedef enum {
PMSIGNAL_RECOVERY_STARTED,
PMSIGNAL_BEGIN_HOT_STANDBY,
PMSIGNAL_LOCAL_RECOVERY_DONE,
PMSIGNAL_WAKEN_ARCHIVER,
PMSIGNAL_ROTATE_LOGFILE,
PMSIGNAL_START_AUTOVAC_LAUNCHER,
PMSIGNAL_START_AUTOVAC_WORKER,
PMSIGNAL_START_CLEAN_STATEMENT,
PMSIGNAL_START_CATCHUP,
PMSIGNAL_START_WALRECEIVER,
PMSIGNAL_START_DATARECEIVER,
PMSIGNAL_ADVANCE_STATE_MACHINE,
PMSIGNAL_DEMOTE_PRIMARY,
PMSIGNAL_PROMOTE_STANDBY,
PMSIGNAL_SWITCHOVER_TIMEOUT,
PMSIGNAL_UPDATE_WAITING,
PMSIGNAL_UPDATE_PROMOTING,
PMSIGNAL_UPDATE_HAREBUILD_REASON,
PMSIGNAL_UPDATE_NORMAL,
PMSIGNAL_START_JOB_SCHEDULER,
PMSIGNAL_START_JOB_WORKER,
PMSIGNAL_ROLLBACK_STANDBY_PROMOTE,
PMSIGNAL_START_PAGE_WRITER,
PMSIGNAL_START_THREADPOOL_WORKER,
PMSIGNAL_START_UNDO_WORKER,
PMSIGNAL_START_RB_WORKER,
PMSIGNAL_START_TXNSNAPWORKER,
PMSIGNAL_START_LOGICAL_READ_WORKER,
PMSIGNAL_START_PARALLEL_DECODE_WORKER,
PMSIGNAL_START_APPLY_WORKER,
PMSIGNAL_DMS_FAILOVER_TERM_BACKENDS,
PMSIGNAL_DMS_FAILOVER_STARTUP,
PMSIGNAL_DMS_SWITCHOVER_PROMOTE,
PMSIGNAL_DMS_REFORM,
PMSIGNAL_DMS_REFORM_DONE,
PMSIGNAL_DMS_TERM_STARTUP,
PMSIGNAL_DMS_SWITCHOVER_DEMOTE_FAILURE_CHECK,
PMSIGNAL_CLEAN_BACKENDS,
NUM_PMSIGNALS
} PMSignalReason;
typedef struct PMSignalData PMSignalData;
* prototypes for functions in pmsignal.c
*/
extern Size PMSignalShmemSize(void);
extern void PMSignalShmemInit(void);
extern void SendPostmasterSignal(PMSignalReason reason);
extern bool CheckPostmasterSignal(PMSignalReason reason);
extern int AssignPostmasterChildSlot(void);
extern bool ReleasePostmasterChildSlot(int slot);
extern bool IsPostmasterChildWalSender(int slot);
extern bool IsPostmasterChildDataSender(int slot);
extern void MarkPostmasterChildActive(void);
extern void MarkPostmasterChildInactive(void);
extern void MarkPostmasterChildWalSender(void);
extern void MarkPostmasterChildDataSender(void);
extern void MarkPostmasterChildNormal(void);
extern bool PostmasterIsAlive(void);
extern void MarkPostmasterChildUnuseForStreamWorker(void);
extern bool IsPostmasterChildSuspect(int slot);
extern void MarkPostmasterChildSusPect(void);
extern void MarkPostmasterTempBackend(void);
extern bool IsPostmasterChildTempBackend(int slot);
#endif