diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-08-08 20:26:25 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-08-08 20:26:25 -0400 |
| commit | 9383af84ee02b755750bae9ce09f0de3d0d1f7c9 (patch) | |
| tree | d650cd857ced2875c9feae1c951e21292b7df80a /src/memory.hpp | |
| parent | 023eff9304e7b4fd139811e2cd4120d7d9707f5a (diff) | |
first pass memory buckets
Diffstat (limited to 'src/memory.hpp')
| -rw-r--r-- | src/memory.hpp | 34 |
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 */ |
