summaryrefslogtreecommitdiff
path: root/src/memory.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-08-08 20:26:25 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-08-08 20:26:25 -0400
commit9383af84ee02b755750bae9ce09f0de3d0d1f7c9 (patch)
treed650cd857ced2875c9feae1c951e21292b7df80a /src/memory.hpp
parent023eff9304e7b4fd139811e2cd4120d7d9707f5a (diff)
first pass memory buckets
Diffstat (limited to 'src/memory.hpp')
-rw-r--r--src/memory.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/memory.hpp b/src/memory.hpp
new file mode 100644
index 0000000..43ada0f
--- /dev/null
+++ b/src/memory.hpp
@@ -0,0 +1,34 @@
+#ifndef PKE_MEMORY_HPP
+#define PKE_MEMORY_HPP
+
+#include <cstdint>
+#include <cstdlib>
+#include <cstdio>
+
+#define DEFAULT_BUCKET_SIZE 1UL << 27
+
+namespace pke
+{
+
+struct MemBucket;
+
+void *PkeNew(std::size_t sz);
+void *PkeNew(std::size_t sz, MemBucket *bkt);
+void PkeDelete(void *ptr);
+void PkeDelete(void *ptr, MemBucket *bkt);
+
+MemBucket *BeginTransientBucket(int64_t sz = DEFAULT_BUCKET_SIZE); // 256MB
+void EndTransientBucket(MemBucket *bkt);
+
+template <typename T>
+T *PkeNew() {
+ return reinterpret_cast<T *>(PkeNew(sizeof(T)));
+}
+template <typename T>
+T *PkeNew(std::size_t sz) {
+ return reinterpret_cast<T *>(PkeNew(sz));
+}
+
+} /* pke */
+
+#endif /* PKE_MEMORY_HPP */