summaryrefslogtreecommitdiff
path: root/src/memory/memory_resource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory/memory_resource.cpp')
-rw-r--r--src/memory/memory_resource.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/memory/memory_resource.cpp b/src/memory/memory_resource.cpp
new file mode 100644
index 00000000..74c0bc48
--- /dev/null
+++ b/src/memory/memory_resource.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2023 jacqueline <me@jacqueline.id.au>
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include "memory_resource.hpp"
+
+#include <memory_resource>
+#include <string>
+#include <utility>
+
+#include <esp_heap_caps.h>
+#include <stdint.h>
+
+namespace memory {
+
+Resource kSpiRamResource{Capabilities::kSpiRam};
+
+void* Resource::do_allocate(std::size_t bytes, std::size_t alignment) {
+ return heap_caps_malloc(bytes, std::to_underlying(caps_));
+}
+
+void Resource::do_deallocate(void* p,
+ std::size_t bytes,
+ std::size_t alignment) {
+ heap_caps_free(p);
+}
+
+bool Resource::do_is_equal(const std::pmr::memory_resource& other) const {
+ return this == &other;
+}
+
+} // namespace memory