diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-04-15 11:22:16 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-04-17 18:43:57 -0500 |
| commit | 3d6258f63dce84519704251b86a16c832958c8a6 (patch) | |
| tree | 6ab212174a7f9f82da26c19ac3d93c1e9b25bc88 /shared-module/rgbmatrix/allocator.h | |
| parent | 64c3968a2e2c626036fcd3d148eae7ba092e6096 (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.h | 29 |
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 |
