1 /*-------------------------------------------------------------------------
2  *
3  * sinvaladt.h
4  *	  POSTGRES shared cache invalidation data manager.
5  *
6  * The shared cache invalidation manager is responsible for transmitting
7  * invalidation messages between backends.  Any message sent by any backend
8  * must be delivered to all already-running backends before it can be
9  * forgotten.  (If we run out of space, we instead deliver a "RESET"
10  * message to backends that have fallen too far behind.)
11  *
12  * The struct type SharedInvalidationMessage, defining the contents of
13  * a single message, is defined in sinval.h.
14  *
15  * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
16  * Portions Copyright (c) 1994, Regents of the University of California
17  *
18  * src/include/storage/sinvaladt.h
19  *
20  *-------------------------------------------------------------------------
21  */
22 #ifndef SINVALADT_H
23 #define SINVALADT_H
24 
25 #include "storage/lock.h"
26 #include "storage/sinval.h"
27 
28 /*
29  * prototypes for functions in sinvaladt.c
30  */
31 extern Size SInvalShmemSize(void);
32 extern void CreateSharedInvalidationState(void);
33 extern void SharedInvalBackendInit(bool sendOnly);
34 extern PGPROC *BackendIdGetProc(int backendID);
35 extern void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin);
36 
37 extern void SIInsertDataEntries(const SharedInvalidationMessage *data, int n);
38 extern int	SIGetDataEntries(SharedInvalidationMessage *data, int datasize);
39 extern void SICleanupQueue(bool callerHasWriteLock, int minFree);
40 
41 extern LocalTransactionId GetNextLocalTransactionId(void);
42 
43 #endif   /* SINVALADT_H */
44