summaryrefslogtreecommitdiff
path: root/shared-module/rgbmatrix/allocator.h
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-04-15 11:22:16 -0500
committerJeff Epler <jepler@gmail.com>2020-04-17 18:43:57 -0500
commit3d6258f63dce84519704251b86a16c832958c8a6 (patch)
tree6ab212174a7f9f82da26c19ac3d93c1e9b25bc88 /shared-module/rgbmatrix/allocator.h
parent64c3968a2e2c626036fcd3d148eae7ba092e6096 (diff)
Rename Protomatter -> RGBMatrix
This is a quick rename, it changes the user-facing names but not the internal names of things.
Diffstat (limited to 'shared-module/rgbmatrix/allocator.h')
-rw-r--r--shared-module/rgbmatrix/allocator.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/shared-module/rgbmatrix/allocator.h b/shared-module/rgbmatrix/allocator.h
new file mode 100644
index 000000000..b7f517ce5
--- /dev/null
+++ b/shared-module/rgbmatrix/allocator.h
@@ -0,0 +1,29 @@
+#ifndef MICROPY_INCLUDED_SHARED_MODULE_PROTOMATTER_ALLOCATOR_H
+#define MICROPY_INCLUDED_SHARED_MODULE_PROTOMATTER_ALLOCATOR_H
+
+#include <stdbool.h>
+#include "py/gc.h"
+#include "py/misc.h"
+#include "supervisor/memory.h"
+
+#define _PM_ALLOCATOR _PM_allocator_impl
+#define _PM_FREE(x) (_PM_free_impl((x)), (x)=NULL, (void)0)
+
+static inline void *_PM_allocator_impl(size_t sz) {
+ if (gc_alloc_possible()) {
+ return m_malloc(sz + sizeof(void*), true);
+ } else {
+ supervisor_allocation *allocation = allocate_memory(align32_size(sz), false);
+ return allocation ? allocation->ptr : NULL;
+ }
+}
+
+static inline void _PM_free_impl(void *ptr_in) {
+ supervisor_allocation *allocation = allocation_from_ptr(ptr_in);
+
+ if (allocation) {
+ free_memory(allocation);
+ }
+}
+
+#endif