aboutsummaryrefslogtreecommitdiff
path: root/src/include/storage/sinvaladt.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/storage/sinvaladt.h')
-rw-r--r--src/include/storage/sinvaladt.h176
1 files changed, 93 insertions, 83 deletions
diff --git a/src/include/storage/sinvaladt.h b/src/include/storage/sinvaladt.h
index 9735cb476b1..12efeb2c8b8 100644
--- a/src/include/storage/sinvaladt.h
+++ b/src/include/storage/sinvaladt.h
@@ -1,12 +1,12 @@
/*-------------------------------------------------------------------------
*
* sinvaladt.h--
- * POSTGRES shared cache invalidation segment definitions.
+ * POSTGRES shared cache invalidation segment definitions.
*
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: sinvaladt.h,v 1.3 1996/11/05 06:11:06 scrappy Exp $
+ * $Id: sinvaladt.h,v 1.4 1997/09/07 05:01:37 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -15,109 +15,119 @@
#include <storage/itemptr.h>
#include <storage/ipc.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
- procState[MaxBackendId] --> limit
- resetState (bool)
-a tag (POSTID)
+ 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
+ procState[MaxBackendId] --> 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 -------
+ SISegEntry --> entryData --> ... (see SharedInvalidData!)
+ isfree (bool)
+ next (offset to next entry in chain )
+b .... (dynamically growing down)
+C----------------End shared segment -------
*/
/* Parameters (configurable) *******************************************/
-#define MaxBackendId 32 /* maximum number of backends */
-#define MAXNUMMESSAGES 1000 /* 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;
- ProcState procState[MaxBackendId]; /* reflects the invalidation state */
- /* here starts the entry section, controlled by offsets */
-} SISeg;
-#define SizeSISeg sizeof(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;
+#define MaxBackendId 32 /* maximum number of backends */
+#define MAXNUMMESSAGES 1000 /* 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;
+ ProcState procState[MaxBackendId]; /* reflects the
+ * invalidation state */
+ /* here starts the entry section, controlled by offsets */
+} SISeg;
+
+#define SizeSISeg sizeof(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;
#define SizeOfOneSISegEntry sizeof(SISegEntry)
-
-typedef struct SISegOffsets {
- Offset startSegment; /* always 0 (for now) */
- Offset offsetToFirstEntry; /* A + a = B */
- Offset offsetToEndOfSegemnt; /* A + a + b */
-} SISegOffsets;
+
+typedef struct SISegOffsets
+{
+ Offset startSegment; /* always 0 (for now) */
+ Offset offsetToFirstEntry; /* A + a = B */
+ Offset offsetToEndOfSegemnt; /* A + a + b */
+} SISegOffsets;
/****************************************************************************/
-/* synchronization of the shared buffer access */
-/* access to the buffer is synchronized by the lock manager !! */
+/* 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_SharedLock (-1)
#define SI_ExclusiveLock (-255)
-extern SISeg *shmInvalBuffer;
+extern SISeg *shmInvalBuffer;
/*
* prototypes for functions in sinvaladt.c
*/
-extern int SIBackendInit(SISeg *segInOutP);
-extern int SISegmentInit(bool killExistingSegment, IPCKey key);
-
-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 */
+extern int SIBackendInit(SISeg * segInOutP);
+extern int SISegmentInit(bool killExistingSegment, IPCKey key);
+
+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 */