3#ifndef PRINTLINES_ALLOWED
4#define PRINTLINES_ALLOWED 0
7static const char *FNAME =
"kest_alloc.c";
9static size_t total_current, total_peak;
16 uint8_t *ptr = malloc(size +
sizeof(
size_t));
23 total_current += size;
25 if (total_current > total_peak)
26 total_peak = total_current;
29 return ptr +
sizeof(size_t);
36 uint8_t *base_ptr = (uint8_t*)ptr -
sizeof(
size_t);
38 size_t size = *(
size_t*)base_ptr;
40 total_current -= size;
53 uint8_t *base_ptr = (uint8_t*)ptr -
sizeof(
size_t);
54 size_t base_size = *(
size_t*)base_ptr;
56 uint8_t *new_ptr = realloc(base_ptr, size +
sizeof(
size_t));
61 *(
size_t*)new_ptr = size;
63 total_current += (size - base_size);
65 if (total_current > total_peak)
66 total_peak = total_current;
69 return new_ptr +
sizeof(size_t);
75 #ifdef KEST_LOG_ALLOCS
85 size_t len = strnlen(str, n);
96 memcpy(new_str, str, len);
106 #ifdef KEST_USE_FREERTOS
110 vTaskDelay(pdMS_TO_TICKS(2000));
119 #ifdef PRINT_MEMORY_USAGE
120 #ifdef KEST_USE_FREERTOS
121 KEST_PRINTF(
"Spinning off memory printer task...\n");
162 return heap_caps_malloc(size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
174 KEST_PRINTF(
"Memory usage: %d alloc'd, %d at peak\n", total_current, total_peak);
195 if (!str)
return NULL;
197 size_t len = strnlen(str, n);
200 if (!new_str)
return NULL;
202 memcpy(new_str, str, len);
void lv_free_core(void *p)
void kest_free(void *ptr)
void * kest_lv_malloc(size_t size)
void * kest_allocator_alloc(kest_allocator *a, size_t n)
void * lv_realloc_core(void *p, size_t new_size)
void * kest_allocator_strndup(kest_allocator *a, const char *str, int n)
void print_memory_report()
void * kest_alloc(size_t size)
void * lv_malloc_core(size_t size)
void * kest_realloc(void *ptr, size_t size)
void kest_allocator_free(kest_allocator *a, void *p)
void * kest_allocator_realloc(kest_allocator *a, void *p, size_t n)
char * kest_strndup(const char *str, size_t n)
void kest_mem_monitor_task(void *param)
void kest_lv_free(void *ptr)
void *(* alloc)(void *data, size_t)
void *(* realloc)(void *data, void *, size_t)
void(* free)(void *data, void *)