⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sinvaladt.h

📁 关系型数据库 Postgresql 6.5.2
💻 H
字号:
/*------------------------------------------------------------------------- * * sinvaladt.h *	  POSTGRES shared cache invalidation segment definitions. * * * Copyright (c) 1994, Regents of the University of California * * $Id: sinvaladt.h,v 1.14.2.1 1999/07/30 17:07:18 scrappy Exp $ * *------------------------------------------------------------------------- */#ifndef SINVALADT_H#define SINVALADT_H#include "storage/ipc.h"#include "storage/itemptr.h"/* * The structure of the shared cache invaidation segment * *//*A------------- Header info --------------	criticalSectionSemaphoreId	generalSemaphoreId	startEntrySection	(offset a)	endEntrySection		(offset a + b)	startFreeSpace		(offset relative to B)	startEntryChain		(offset relatiev to B)	endEntryChain		(offset relative to B)	numEntries	maxNumEntries	maxBackends	procState[maxBackends] --> limit								resetState (bool)a								tag (POSTID)B------------- Start entry section -------	SISegEntry	--> entryData --> ... (see	SharedInvalidData!)					isfree	(bool)					next  (offset to next entry in chain )b	  .... (dynamically growing down)C----------------End shared segment -------*//* Parameters (configurable)  *******************************************/#define MAXNUMMESSAGES 4000		/* maximum number of messages in seg */#define InvalidOffset	1000000000		/* a invalid offset  (End of										 * chain) */typedef struct ProcState{	int			limit;			/* the number of read messages			*/	bool		resetState;		/* true, if backend has to reset its state */	int			tag;			/* special tag, recieved from the								 * postmaster */} ProcState;typedef struct SISeg{	IpcSemaphoreId criticalSectionSemaphoreId;	/* semaphore id		*/	IpcSemaphoreId generalSemaphoreId;	/* semaphore id		*/	Offset		startEntrySection;		/* (offset a)					*/	Offset		endEntrySection;/* (offset a + b)				*/	Offset		startFreeSpace; /* (offset relative to B)		*/	Offset		startEntryChain;/* (offset relative to B)		*/	Offset		endEntryChain;	/* (offset relative to B)		*/	int			numEntries;	int			maxNumEntries;	int			maxBackends;	/* size of procState array */	/*	 * We declare procState as 1 entry because C wants a fixed-size array,	 * but actually it is maxBackends entries long.	 */	ProcState	procState[1];	/* reflects the invalidation state */	/*	 * The entry section begins after the end of the procState array.	 * Everything there is controlled by offsets.	 */} SISeg;typedef struct SharedInvalidData{	int			cacheId;		/* XXX */	Index		hashIndex;	ItemPointerData pointerData;} SharedInvalidData;typedef SharedInvalidData *SharedInvalid;typedef struct SISegEntry{	SharedInvalidData entryData;/* the message data */	bool		isfree;			/* entry free? */	Offset		next;			/* offset to next entry */} SISegEntry;typedef struct SISegOffsets{	Offset		startSegment;	/* always 0 (for now) */	Offset		offsetToFirstEntry;		/* A + a = B */	Offset		offsetToEndOfSegment;	/* A + a + b */} SISegOffsets;/****************************************************************************//* synchronization of the shared buffer access								*//*	  access to the buffer is synchronized by the lock manager !!			*//****************************************************************************/#define SI_LockStartValue  255#define SI_SharedLock	  (-1)#define SI_ExclusiveLock  (-255)extern SISeg *shmInvalBuffer;/* * prototypes for functions in sinvaladt.c */extern int	SIBackendInit(SISeg *segInOutP);extern int	SISegmentInit(bool killExistingSegment, IPCKey key,						  int maxBackends);extern bool SISetDataEntry(SISeg *segP, SharedInvalidData *data);extern void SISetProcStateInvalid(SISeg *segP);extern bool SIDelDataEntry(SISeg *segP);extern void SIReadEntryData(SISeg *segP, int backendId,				void (*invalFunction) (), void (*resetFunction) ());extern void SIDelExpiredDataEntries(SISeg *segP);#endif	 /* SINVALADT_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -