summaryrefslogtreecommitdiffstats
path: root/mem-pool.h
diff options
context:
space:
mode:
authorJameson Miller <jamill@microsoft.com>2018-04-11 18:37:55 +0000
committerJunio C Hamano <gitster@pobox.com>2018-04-12 11:55:20 +0900
commit065feab4ebc8e160ab025ff351d724aeda3623ad (patch)
tree6f2e142fb5784be73e70abdbdc8bdc2b22f881d9 /mem-pool.h
parent96c47d1466d2d11e2028b79fdc0bcaf7a4bb7345 (diff)
downloadgit-065feab4ebc8e160ab025ff351d724aeda3623ad.tar.gz
git-065feab4ebc8e160ab025ff351d724aeda3623ad.tar.xz
mem-pool: move reusable parts of memory pool into its own file
This moves the reusable parts of the memory pool logic used by fast-import.c into its own file for use by other components. Signed-off-by: Jameson Miller <jamill@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'mem-pool.h')
-rw-r--r--mem-pool.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/mem-pool.h b/mem-pool.h
new file mode 100644
index 000000000..829ad58ec
--- /dev/null
+++ b/mem-pool.h
@@ -0,0 +1,34 @@
+#ifndef MEM_POOL_H
+#define MEM_POOL_H
+
+struct mp_block {
+ struct mp_block *next_block;
+ char *next_free;
+ char *end;
+ uintmax_t space[FLEX_ARRAY]; /* more */
+};
+
+struct mem_pool {
+ struct mp_block *mp_block;
+
+ /*
+ * The amount of available memory to grow the pool by.
+ * This size does not include the overhead for the mp_block.
+ */
+ size_t block_alloc;
+
+ /* The total amount of memory allocated by the pool. */
+ size_t pool_alloc;
+};
+
+/*
+ * Alloc memory from the mem_pool.
+ */
+void *mem_pool_alloc(struct mem_pool *pool, size_t len);
+
+/*
+ * Allocate and zero memory from the memory pool.
+ */
+void *mem_pool_calloc(struct mem_pool *pool, size_t count, size_t size);
+
+#endif