summaryrefslogtreecommitdiff
path: root/src/include/storage/bufmgr.h
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-04-24 14:43:33 +0000
committerBruce Momjian <bruce@momjian.us>1998-04-24 14:43:33 +0000
commit4cbfeef91291f4a4f38aa7ee7ee9030b94457fe1 (patch)
tree835c5c06b18e44d674b55ce9355bf057f57f4d50 /src/include/storage/bufmgr.h
parent7500a961f169455b95a97b59bf8a3544ec851fd0 (diff)
downloadpostgresql-4cbfeef91291f4a4f38aa7ee7ee9030b94457fe1.tar.gz
Inline some small functions called for every row.
Diffstat (limited to 'src/include/storage/bufmgr.h')
-rw-r--r--src/include/storage/bufmgr.h59
1 files changed, 55 insertions, 4 deletions
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index fdc3abcee4..f27e9d1ed3 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: bufmgr.h,v 1.18 1998/02/26 04:43:22 momjian Exp $
+ * $Id: bufmgr.h,v 1.19 1998/04/24 14:43:18 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,6 +18,7 @@
#include <storage/ipc.h>
#include <storage/block.h>
#include <storage/buf.h>
+#include <storage/buf_internals.h>
#include <utils/rel.h>
/*
@@ -73,6 +74,59 @@ extern int ShowPinTrace;
#define BUFFER_LATE_WRITE 1 /* delayed write: mark as DIRTY */
/*
+ * BufferIsValid --
+ * True iff the refcnt of the local buffer is > 0
+ * Note:
+ * BufferIsValid(InvalidBuffer) is False.
+ * BufferIsValid(UnknownBuffer) is False.
+ */
+#define BufferIsValid(bufnum) \
+( \
+ BufferIsLocal(bufnum) ? \
+ ((bufnum) >= -NLocBuffer && LocalRefCount[-(bufnum) - 1] > 0) \
+ : \
+ ( \
+ BAD_BUFFER_ID(bufnum) ? \
+ false \
+ : \
+ (PrivateRefCount[(bufnum) - 1] > 0) \
+ ) \
+)
+
+#define IncrBufferRefCount(buffer) \
+( \
+ BufferIsLocal(buffer) ? \
+ ( \
+ (void)AssertMacro(LocalRefCount[-(buffer) - 1] >= 0), \
+ (void)LocalRefCount[-(buffer) - 1]++ \
+ ) \
+ : \
+ ( \
+ (void)AssertMacro(!BAD_BUFFER_ID(buffer)), \
+ (void)AssertMacro(PrivateRefCount[(buffer) - 1] >= 0), \
+ (void)PrivateRefCount[(buffer) - 1]++ \
+ ) \
+)
+
+/*
+ * BufferGetBlock --
+ * Returns a reference to a disk page image associated with a buffer.
+ *
+ * Note:
+ * Assumes buffer is valid.
+ */
+#define BufferGetBlock(buffer) \
+( \
+ (void)AssertMacro(BufferIsValid(buffer)), \
+\
+ BufferIsLocal(buffer) ? \
+ ((Block) MAKE_PTR(LocalBufferDescriptors[-(buffer) - 1].data)) \
+ : \
+ ((Block) MAKE_PTR(BufferDescriptors[(buffer) - 1].data)) \
+)
+
+
+/*
* prototypes for functions in bufmgr.c
*/
extern Buffer
@@ -91,17 +145,14 @@ extern void ResetBufferUsage(void);
extern void ResetBufferPool(void);
extern int BufferPoolCheckLeak(void);
extern void FlushBufferPool(int StableMainMemoryFlag);
-extern bool BufferIsValid(Buffer bufnum);
extern BlockNumber BufferGetBlockNumber(Buffer buffer);
extern Relation BufferGetRelation(Buffer buffer);
extern BlockNumber RelationGetNumberOfBlocks(Relation relation);
-extern Block BufferGetBlock(Buffer buffer);
extern void ReleaseRelationBuffers(Relation rdesc);
extern void DropBuffers(Oid dbid);
extern void PrintBufferDescs(void);
extern void PrintPinnedBufs(void);
extern int BufferShmemSize(void);
-extern void IncrBufferRefCount(Buffer buffer);
extern int ReleaseBuffer(Buffer buffer);
extern void BufferRefCountReset(int *refcountsave);