#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,
NUM_PROCSIGNALS
} ProcSignalReason;
typedef enum
{
PROCSIGNAL_BARRIER_SMGRRELEASE,
} ProcSignalBarrierType;
extern Size ProcSignalShmemSize(void);
extern void ProcSignalShmemInit(void);
extern void ProcSignalInit(void);
extern int SendProcSignal(pid_t pid, ProcSignalReason reason,
ProcNumber procNumber);
extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type);
extern void WaitForProcSignalBarrier(uint64 generation);
extern void ProcessProcSignalBarrier(void);
extern void procsignal_sigusr1_handler(SIGNAL_ARGS);
#endif