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
204#define NumProcStateSlots (MaxBackends + NUM_AUXILIARY_PROCS)
281 elog(
PANIC,
"unexpected MyProcNumber %d in SharedInvalBackendInit (max %d)",
296 elog(
ERROR,
"sinval slot for backend %d is already in use by process %d",
308 stateP->resetState =
false;
310 stateP->hasMessages =
false;
311 stateP->sendOnly = sendOnly;
346 stateP->resetState =
false;
349 for (
i =
segP->numProcs - 1;
i >= 0;
i--)
353 if (
i !=
segP->numProcs - 1)
359 elog(
PANIC,
"could not find entry in sinval array");
414 max =
segP->maxMsgNum;
423 segP->maxMsgNum = max;
433 for (
i = 0;
i <
segP->numProcs;
i++)
508 stateP->hasMessages =
false;
512 max =
segP->maxMsgNum;
523 stateP->resetState =
false;
551 if (
stateP->nextMsgNum >= max)
554 stateP->hasMessages =
true;
599 min =
segP->maxMsgNum;
603 for (
i = 0;
i <
segP->numProcs;
i++)
619 stateP->resetState =
true;
635 segP->minMsgNum = min;
646 for (
i = 0;
i <
segP->numProcs;
i++)
#define Assert(condition)
#define FLEXIBLE_ARRAY_MEMBER
uint32 LocalTransactionId
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)
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]