129#define MAXNUMMESSAGES 4096
130#define MSGNUMWRAPAROUND (MAXNUMMESSAGES * 262144)
131#define CLEANUP_MIN (MAXNUMMESSAGES / 2)
132#define CLEANUP_QUANTUM (MAXNUMMESSAGES / 16)
133#define SIG_THRESHOLD (MAXNUMMESSAGES / 2)
134#define WRITE_QUANTUM 64
203#define NumProcStateSlots (MaxBackends + NUM_AUXILIARY_PROCS)
221 size = offsetof(
SISeg, procState);
280 elog(
PANIC,
"unexpected MyProcNumber %d in SharedInvalBackendInit (max %d)",
295 elog(
ERROR,
"sinval slot for backend %d is already in use by process %d",
358 elog(
PANIC,
"could not find entry in sinval array");
414 while (nthistime-- > 0)
537 while (n < datasize && stateP->nextMsgNum < max)
587 if (!callerHasWriteLock)
628 if (n < minsig && !stateP->signaled)
666 pid_t his_pid = needSig->
procPid;
672 elog(
DEBUG4,
"sending sinval catchup signal to PID %d", (
int) his_pid);
674 if (callerHasWriteLock)
680 if (!callerHasWriteLock)
#define PointerIsValid(pointer)
#define FLEXIBLE_ARRAY_MEMBER
uint32 LocalTransactionId
Assert(PointerIsAligned(start, uint64))
void on_shmem_exit(pg_on_exit_callback function, Datum arg)
#define InvalidLocalTransactionId
#define LocalTransactionIdIsValid(lxid)
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
int SendProcSignal(pid_t pid, ProcSignalReason reason, ProcNumber procNumber)
@ PROCSIG_CATCHUP_INTERRUPT
Size add_size(Size s1, Size s2)
Size mul_size(Size s1, Size s2)
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
struct ProcState ProcState
static SISeg * shmInvalBuffer
void SICleanupQueue(bool callerHasWriteLock, int minFree)
#define NumProcStateSlots
static void CleanupInvalidationState(int status, Datum arg)
Size SharedInvalShmemSize(void)
void SharedInvalBackendInit(bool sendOnly)
int SIGetDataEntries(SharedInvalidationMessage *data, int datasize)
void SharedInvalShmemInit(void)
void SIInsertDataEntries(const SharedInvalidationMessage *data, int n)
LocalTransactionId GetNextLocalTransactionId(void)
static LocalTransactionId nextLocalTransactionId
#define SpinLockInit(lock)
#define SpinLockRelease(lock)
#define SpinLockAcquire(lock)
LocalTransactionId nextLXID
SharedInvalidationMessage buffer[MAXNUMMESSAGES]
ProcState procState[FLEXIBLE_ARRAY_MEMBER]