1 #ifndef _MALLOC_H
2 #define _MALLOC_H
3 
4 #include <stdio.h>
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 #define __NEED_size_t
10 #define __NEED_ssize_t
11 #define __NEED_uintptr_t
12 
13 #include <bits/alltypes.h>
14 
15 void *malloc (size_t);
16 void *calloc (size_t, size_t);
17 void *realloc (void *, size_t);
18 void free (void *);
19 void *valloc (size_t);
20 void *memalign(size_t, size_t);
21 
22 size_t malloc_usable_size(void *);
23 
24 #define __MALLINFO_BODY \
25   size_t arena; \
26   size_t ordblks; \
27   size_t smblks; \
28   size_t hblks; \
29   size_t hblkhd; \
30   size_t usmblks; \
31   size_t fsmblks; \
32   size_t uordblks; \
33   size_t fordblks; \
34   size_t keepcost;
35 
36 struct mallinfo { __MALLINFO_BODY };
37 
38 struct mallinfo mallinfo(void);
39 
40 struct mallinfo2 { __MALLINFO_BODY };
41 
42 struct mallinfo2 mallinfo2(void);
43 
44 int malloc_iterate(void* base, size_t size, void (*callback)(void* base, size_t size, void* arg), void* arg);
45 void malloc_disable(void);
46 void malloc_enable(void);
47 
48 int malloc_info(int options, FILE* fp);
49 void malloc_stats_print(void (*write_cb) (void *, const char *), void *cbopaque, const char *opts);
50 
51 
52 #define M_SET_THREAD_CACHE -1001
53 #define M_THREAD_CACHE_ENABLE 1
54 #define M_THREAD_CACHE_DISABLE 0
55 
56 #define M_FLUSH_THREAD_CACHE -1002
57 
58 #define M_DELAYED_FREE -1003
59 #define M_DELAYED_FREE_ENABLE 1
60 #define M_DELAYED_FREE_DISABLE 0
61 
62 #define M_OHOS_CONFIG -1004
63 #define M_DISABLE_OPT_TCACHE 100
64 #define M_ENABLE_OPT_TCACHE 101
65 #define M_TCACHE_PERFORMANCE_MODE 102
66 #define M_TCACHE_NORMAL_MODE 103
67 
68 #define M_SET_SECURITY_LEVEL (-1005)
69 #define M_SECURITY_LEVEL_LOW 10
70 #define M_SECURITY_LEVEL_MID 11
71 #define M_SECURITY_LEVEL_HIGH 12
72 
73 #define M_ENABLE_CHECK_DOUBLE_FREE_DEFAULT (-1006)
74 #define M_CHECK_DOUBLE_FREE_DEFAULT_ENABLE 1
75 #define M_CHECK_DOUBLE_FREE_DEFAULT_DISABLE 0
76 
77 #define M_ENABLE_CHECK_DOUBLE_FREE_REDZONE (-1007)
78 #define M_CHECK_DOUBLE_FREE_REDZONE_ENABLE 1
79 #define M_CHECK_DOUBLE_FREE_REDZONE_DISABLE 0
80 
81 #define M_ENABLE_RANDOM_ALLOCATION (-1008)
82 #define M_RANDOM_ALLOCATION_ENABLE 1
83 #define M_RANDOM_ALLOCATION_DISABLE 0
84 
85 #define M_ENABLE_CHECK_USE_AFTER_FREE (-1009)
86 #define M_CHECK_USE_AFTER_FREE_ENABLE 1
87 #define M_CHECK_USE_AFTER_FREE_DISABLE 0
88 
89 #define M_ENABLE_CHECK_OVERFLOW_SLAB (-1010)
90 #define M_CHECK_OVERFLOW_SLAB_ENABLE 1
91 #define M_CHECK_OVERFLOW_SLAB_DISABLE 0
92 
93 #define M_ENABLE_CHECK_OVERFLOW_LARGE (-1011)
94 #define M_CHECK_OVERFLOW_LARGE_ENABLE 1
95 #define M_CHECK_OVERFLOW_LARGE_DISABLE 0
96 
97 #define M_ENABLE_QUARANTINE_DEFAULT (-1012)
98 #define M_QUARANTINE_ENABLE 1
99 #define M_QUARANTINE_DISABLE 0
100 
101 #define M_SET_QUARANTINE_SIZE (-1013)
102 
103 #define M_SET_QUARANTINE_MAX_BLOCK_SIZE (-1014)
104 
105 int mallopt(int param, int value);
106 ssize_t malloc_backtrace(void* pointer, uintptr_t* frames, size_t frame_count);
107 #ifdef __cplusplus
108 }
109 #endif
110 
111 #endif
112