#ifndef PROCSIGNAL_H
#define PROCSIGNAL_H
#include "storage/procnumber.h"
typedef enum
{
PROCSIG_CATCHUP_INTERRUPT,
PROCSIG_NOTIFY_INTERRUPT,
PROCSIG_PARALLEL_MESSAGE,
PROCSIG_WALSND_INIT_STOPPING,
PROCSIG_BARRIER,
PROCSIG_LOG_MEMORY_CONTEXT,
PROCSIG_PARALLEL_APPLY_MESSAGE,
PROCSIG_RECOVERY_CONFLICT_FIRST,
PROCSIG_RECOVERY_CONFLICT_DATABASE = PROCSIG_RECOVERY_CONFLICT_FIRST,
PROCSIG_RECOVERY_CONFLICT_TABLESPACE,
PROCSIG_RECOVERY_CONFLICT_LOCK,
PROCSIG_RECOVERY_CONFLICT_SNAPSHOT,
PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT,
PROCSIG_RECOVERY_CONFLICT_BUFFERPIN,
PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
PROCSIG_SLOTSYNC_MESSAGE,
} ProcSignalReason;
#define NUM_PROCSIGNALS (PROCSIG_SLOTSYNC_MESSAGE + 1)
typedef enum
{
PROCSIGNAL_BARRIER_SMGRRELEASE,
} ProcSignalBarrierType;
#define MAX_CANCEL_KEY_LENGTH 32
extern Size ProcSignalShmemSize(void);
extern void ProcSignalShmemInit(void);
extern void ProcSignalInit(const uint8 *cancel_key, int cancel_key_len);
extern int SendProcSignal(pid_t pid, ProcSignalReason reason,
ProcNumber procNumber);
extern void SendCancelRequest(int backendPID, const uint8 *cancel_key, int cancel_key_len);
extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type);
extern void WaitForProcSignalBarrier(uint64 generation);
extern void ProcessProcSignalBarrier(void);
extern void procsignal_sigusr1_handler(SIGNAL_ARGS);
typedef struct ProcSignalHeader ProcSignalHeader;
#ifdef EXEC_BACKEND
extern PGDLLIMPORT ProcSignalHeader *ProcSignal;
#endif
#endif