1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2015-01-28 Bernard first version 9 * 2021-11-13 Meco Man implement no-heap warning 10 */ 11 12 #include <rtthread.h> 13 #include <stddef.h> 14 15 #ifndef RT_USING_HEAP 16 #define DBG_TAG "dlib.syscall.mem" 17 #define DBG_LVL DBG_INFO 18 #include <rtdbg.h> 19 #define _NO_HEAP_ERROR() do{LOG_E("Please enable RT_USING_HEAP");\ 20 RT_ASSERT(0);\ 21 }while(0) 22 #endif /* RT_USING_HEAP */ 23 malloc(size_t n)24void *malloc(size_t n) 25 { 26 #ifdef RT_USING_HEAP 27 return rt_malloc(n); 28 #else 29 _NO_HEAP_ERROR(); 30 return RT_NULL; 31 #endif 32 } 33 realloc(void * rmem,size_t newsize)34void *realloc(void *rmem, size_t newsize) 35 { 36 #ifdef RT_USING_HEAP 37 return rt_realloc(rmem, newsize); 38 #else 39 _NO_HEAP_ERROR(); 40 return RT_NULL; 41 #endif 42 } 43 calloc(size_t nelem,size_t elsize)44void *calloc(size_t nelem, size_t elsize) 45 { 46 #ifdef RT_USING_HEAP 47 return rt_calloc(nelem, elsize); 48 #else 49 _NO_HEAP_ERROR(); 50 return RT_NULL; 51 #endif 52 } 53 free(void * rmem)54void free(void *rmem) 55 { 56 #ifdef RT_USING_HEAP 57 rt_free(rmem); 58 #else 59 _NO_HEAP_ERROR(); 60 #endif 61 } 62