1570af302Sopenharmony_ci#ifndef _MALLOC_H
2570af302Sopenharmony_ci#define _MALLOC_H
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#include <stdio.h>
5570af302Sopenharmony_ci
6570af302Sopenharmony_ci#ifdef __cplusplus
7570af302Sopenharmony_ciextern "C" {
8570af302Sopenharmony_ci#endif
9570af302Sopenharmony_ci
10570af302Sopenharmony_ci#define __NEED_size_t
11570af302Sopenharmony_ci#define __NEED_ssize_t
12570af302Sopenharmony_ci#define __NEED_uintptr_t
13570af302Sopenharmony_ci
14570af302Sopenharmony_ci#include <bits/alltypes.h>
15570af302Sopenharmony_ci
16570af302Sopenharmony_civoid *malloc (size_t);
17570af302Sopenharmony_civoid *calloc (size_t, size_t);
18570af302Sopenharmony_civoid *realloc (void *, size_t);
19570af302Sopenharmony_civoid free (void *);
20570af302Sopenharmony_civoid *valloc (size_t);
21570af302Sopenharmony_civoid *memalign(size_t, size_t);
22570af302Sopenharmony_ci
23570af302Sopenharmony_cisize_t malloc_usable_size(void *);
24570af302Sopenharmony_ci
25570af302Sopenharmony_ci#define __MALLINFO_BODY \
26570af302Sopenharmony_ci  size_t arena; \
27570af302Sopenharmony_ci  size_t ordblks; \
28570af302Sopenharmony_ci  size_t smblks; \
29570af302Sopenharmony_ci  size_t hblks; \
30570af302Sopenharmony_ci  size_t hblkhd; \
31570af302Sopenharmony_ci  size_t usmblks; \
32570af302Sopenharmony_ci  size_t fsmblks; \
33570af302Sopenharmony_ci  size_t uordblks; \
34570af302Sopenharmony_ci  size_t fordblks; \
35570af302Sopenharmony_ci  size_t keepcost;
36570af302Sopenharmony_ci
37570af302Sopenharmony_cistruct mallinfo { __MALLINFO_BODY };
38570af302Sopenharmony_ci
39570af302Sopenharmony_cistruct mallinfo mallinfo(void);
40570af302Sopenharmony_ci
41570af302Sopenharmony_cistruct mallinfo2 { __MALLINFO_BODY };
42570af302Sopenharmony_ci
43570af302Sopenharmony_cistruct mallinfo2 mallinfo2(void);
44570af302Sopenharmony_ci
45570af302Sopenharmony_ciint malloc_iterate(void* base, size_t size, void (*callback)(void* base, size_t size, void* arg), void* arg);
46570af302Sopenharmony_civoid malloc_disable(void);
47570af302Sopenharmony_civoid malloc_enable(void);
48570af302Sopenharmony_ci
49570af302Sopenharmony_ciint malloc_info(int options, FILE* fp);
50570af302Sopenharmony_civoid malloc_stats_print(void (*write_cb) (void *, const char *), void *cbopaque, const char *opts);
51570af302Sopenharmony_ci
52570af302Sopenharmony_ci
53570af302Sopenharmony_ci#define M_SET_THREAD_CACHE (-1001)
54570af302Sopenharmony_ci#define M_THREAD_CACHE_ENABLE 1
55570af302Sopenharmony_ci#define M_THREAD_CACHE_DISABLE 0
56570af302Sopenharmony_ci
57570af302Sopenharmony_ci#define M_FLUSH_THREAD_CACHE (-1002)
58570af302Sopenharmony_ci
59570af302Sopenharmony_ci#define M_DELAYED_FREE (-1003)
60570af302Sopenharmony_ci#define M_DELAYED_FREE_ENABLE 1
61570af302Sopenharmony_ci#define M_DELAYED_FREE_DISABLE 0
62570af302Sopenharmony_ci
63570af302Sopenharmony_ci#define M_OHOS_CONFIG (-1004)
64570af302Sopenharmony_ci#define M_DISABLE_OPT_TCACHE 100
65570af302Sopenharmony_ci#define M_ENABLE_OPT_TCACHE 101
66570af302Sopenharmony_ci#define M_TCACHE_PERFORMANCE_MODE 102
67570af302Sopenharmony_ci#define M_TCACHE_NORMAL_MODE 103
68570af302Sopenharmony_ci
69570af302Sopenharmony_ci#define M_SET_SECURITY_LEVEL (-1005)
70570af302Sopenharmony_ci#define M_SECURITY_LEVEL_LOW 10
71570af302Sopenharmony_ci#define M_SECURITY_LEVEL_MID 11
72570af302Sopenharmony_ci#define M_SECURITY_LEVEL_HIGH 12
73570af302Sopenharmony_ci
74570af302Sopenharmony_ci#define M_ENABLE_CHECK_DOUBLE_FREE_DEFAULT (-1006)
75570af302Sopenharmony_ci#define M_CHECK_DOUBLE_FREE_DEFAULT_ENABLE 1
76570af302Sopenharmony_ci#define M_CHECK_DOUBLE_FREE_DEFAULT_DISABLE 0
77570af302Sopenharmony_ci
78570af302Sopenharmony_ci#define M_ENABLE_CHECK_DOUBLE_FREE_REDZONE (-1007)
79570af302Sopenharmony_ci#define M_CHECK_DOUBLE_FREE_REDZONE_ENABLE 1
80570af302Sopenharmony_ci#define M_CHECK_DOUBLE_FREE_REDZONE_DISABLE 0
81570af302Sopenharmony_ci
82570af302Sopenharmony_ci#define M_ENABLE_RANDOM_ALLOCATION (-1008)
83570af302Sopenharmony_ci#define M_RANDOM_ALLOCATION_ENABLE 1
84570af302Sopenharmony_ci#define M_RANDOM_ALLOCATION_DISABLE 0
85570af302Sopenharmony_ci
86570af302Sopenharmony_ci#define M_ENABLE_CHECK_USE_AFTER_FREE (-1009)
87570af302Sopenharmony_ci#define M_CHECK_USE_AFTER_FREE_ENABLE 1
88570af302Sopenharmony_ci#define M_CHECK_USE_AFTER_FREE_DISABLE 0
89570af302Sopenharmony_ci
90570af302Sopenharmony_ci#define M_ENABLE_CHECK_OVERFLOW_SLAB (-1010)
91570af302Sopenharmony_ci#define M_CHECK_OVERFLOW_SLAB_ENABLE 1
92570af302Sopenharmony_ci#define M_CHECK_OVERFLOW_SLAB_DISABLE 0
93570af302Sopenharmony_ci
94570af302Sopenharmony_ci#define M_ENABLE_CHECK_OVERFLOW_LARGE (-1011)
95570af302Sopenharmony_ci#define M_CHECK_OVERFLOW_LARGE_ENABLE 1
96570af302Sopenharmony_ci#define M_CHECK_OVERFLOW_LARGE_DISABLE 0
97570af302Sopenharmony_ci
98570af302Sopenharmony_ci#define M_ENABLE_QUARANTINE_DEFAULT (-1012)
99570af302Sopenharmony_ci#define M_QUARANTINE_ENABLE 1
100570af302Sopenharmony_ci#define M_QUARANTINE_DISABLE 0
101570af302Sopenharmony_ci
102570af302Sopenharmony_ci#define M_SET_QUARANTINE_SIZE (-1013)
103570af302Sopenharmony_ci
104570af302Sopenharmony_ci#define M_SET_QUARANTINE_MAX_BLOCK_SIZE (-1014)
105570af302Sopenharmony_ci
106570af302Sopenharmony_ciint mallopt(int param, int value);
107570af302Sopenharmony_cissize_t malloc_backtrace(void* pointer, uintptr_t* frames, size_t frame_count);
108570af302Sopenharmony_ci
109570af302Sopenharmony_ci#ifdef __cplusplus
110570af302Sopenharmony_ci}
111570af302Sopenharmony_ci#endif
112570af302Sopenharmony_ci
113570af302Sopenharmony_ci#endif
114