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