aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/memutils.h
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-02-06 16:50:34 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-02-06 16:50:34 +0000
commitead64f317be6eae7cdff9074659f8140aea3c4d5 (patch)
treef7fe63cf1348da3e4faec9e2dde2f87192ae257a /src/include/utils/memutils.h
parent7d2b3874aa0a759f69c0eaa0e140353418fc270e (diff)
downloadpostgresql-ead64f317be6eae7cdff9074659f8140aea3c4d5.tar.gz
postgresql-ead64f317be6eae7cdff9074659f8140aea3c4d5.zip
New alloc set code using a memory block pool for small allocations.
Jan
Diffstat (limited to 'src/include/utils/memutils.h')
-rw-r--r--src/include/utils/memutils.h32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
index 9e1adb796f6..0bf4f6ef13b 100644
--- a/src/include/utils/memutils.h
+++ b/src/include/utils/memutils.h
@@ -15,7 +15,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: memutils.h,v 1.19 1998/12/26 18:15:53 momjian Exp $
+ * $Id: memutils.h,v 1.20 1999/02/06 16:50:33 wieck Exp $
*
* NOTES
* some of the information in this file will be moved to
@@ -209,12 +209,40 @@ typedef enum AllocMode
#define DefaultAllocMode DynamicAllocMode
/*
+ * AllocBlock --
+ * Small pieces of memory are taken from bigger blocks of
+ * memory with a size aligned to a power of two. These
+ * pieces are not free's separately, instead they are reused
+ * for the next allocation of a fitting size.
+ */
+typedef struct AllocBlockData {
+ struct AllocSetData *aset;
+ struct AllocBlockData *next;
+ char *freeptr;
+ char *endptr;
+} AllocBlockData;
+
+typedef AllocBlockData *AllocBlock;
+
+/*
+ * AllocChunk --
+ * The prefix of each piece of memory in an AllocBlock
+ */
+typedef struct AllocChunkData {
+ void *aset;
+ Size size;
+} AllocChunkData;
+
+typedef AllocChunkData *AllocChunk;
+
+/*
* AllocSet --
* Allocation set.
*/
typedef struct AllocSetData
{
- OrderedSetData setData;
+ struct AllocBlockData *blocks;
+ struct AllocChunkData *freelist[8];
/* Note: this will change in the future to support other modes */
} AllocSetData;