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)24 void *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)34 void *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)44 void *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)54 void free(void *rmem)
55 {
56 #ifdef RT_USING_HEAP
57     rt_free(rmem);
58 #else
59     _NO_HEAP_ERROR();
60 #endif
61 }
62