1 | #ifndef JEMALLOC_PREAMBLE_H |
2 | #define JEMALLOC_PREAMBLE_H |
3 | |
4 | #include "jemalloc_internal_defs.h" |
5 | #include "jemalloc/internal/jemalloc_internal_decls.h" |
6 | |
7 | #ifdef JEMALLOC_UTRACE |
8 | #include <sys/ktrace.h> |
9 | #endif |
10 | |
11 | #define JEMALLOC_NO_DEMANGLE |
12 | #ifdef JEMALLOC_JET |
13 | # undef JEMALLOC_IS_MALLOC |
14 | # define JEMALLOC_N(n) jet_##n |
15 | # include "jemalloc/internal/public_namespace.h" |
16 | # define JEMALLOC_NO_RENAME |
17 | # include "jemalloc/jemalloc.h" |
18 | # undef JEMALLOC_NO_RENAME |
19 | #else |
20 | # define JEMALLOC_N(n) je_##n |
21 | # include "jemalloc/jemalloc.h" |
22 | #endif |
23 | |
24 | #if (defined(JEMALLOC_OSATOMIC) || defined(JEMALLOC_OSSPIN)) |
25 | #include <libkern/OSAtomic.h> |
26 | #endif |
27 | |
28 | #ifdef JEMALLOC_ZONE |
29 | #include <mach/mach_error.h> |
30 | #include <mach/mach_init.h> |
31 | #include <mach/vm_map.h> |
32 | #endif |
33 | |
34 | #include "jemalloc/internal/jemalloc_internal_macros.h" |
35 | |
36 | /* |
37 | * Note that the ordering matters here; the hook itself is name-mangled. We |
38 | * want the inclusion of hooks to happen early, so that we hook as much as |
39 | * possible. |
40 | */ |
41 | #ifndef JEMALLOC_NO_PRIVATE_NAMESPACE |
42 | # ifndef JEMALLOC_JET |
43 | # include "jemalloc/internal/private_namespace.h" |
44 | # else |
45 | # include "jemalloc/internal/private_namespace_jet.h" |
46 | # endif |
47 | #endif |
48 | #include "jemalloc/internal/test_hooks.h" |
49 | |
50 | #ifdef JEMALLOC_DEFINE_MADVISE_FREE |
51 | # define JEMALLOC_MADV_FREE 8 |
52 | #endif |
53 | |
54 | static const bool config_debug = |
55 | #ifdef JEMALLOC_DEBUG |
56 | true |
57 | #else |
58 | false |
59 | #endif |
60 | ; |
61 | static const bool have_dss = |
62 | #ifdef JEMALLOC_DSS |
63 | true |
64 | #else |
65 | false |
66 | #endif |
67 | ; |
68 | static const bool have_madvise_huge = |
69 | #ifdef JEMALLOC_HAVE_MADVISE_HUGE |
70 | true |
71 | #else |
72 | false |
73 | #endif |
74 | ; |
75 | static const bool config_fill = |
76 | #ifdef JEMALLOC_FILL |
77 | true |
78 | #else |
79 | false |
80 | #endif |
81 | ; |
82 | static const bool config_lazy_lock = |
83 | #ifdef JEMALLOC_LAZY_LOCK |
84 | true |
85 | #else |
86 | false |
87 | #endif |
88 | ; |
89 | static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF; |
90 | static const bool config_prof = |
91 | #ifdef JEMALLOC_PROF |
92 | true |
93 | #else |
94 | false |
95 | #endif |
96 | ; |
97 | static const bool config_prof_libgcc = |
98 | #ifdef JEMALLOC_PROF_LIBGCC |
99 | true |
100 | #else |
101 | false |
102 | #endif |
103 | ; |
104 | static const bool config_prof_libunwind = |
105 | #ifdef JEMALLOC_PROF_LIBUNWIND |
106 | true |
107 | #else |
108 | false |
109 | #endif |
110 | ; |
111 | static const bool maps_coalesce = |
112 | #ifdef JEMALLOC_MAPS_COALESCE |
113 | true |
114 | #else |
115 | false |
116 | #endif |
117 | ; |
118 | static const bool config_stats = |
119 | #ifdef JEMALLOC_STATS |
120 | true |
121 | #else |
122 | false |
123 | #endif |
124 | ; |
125 | static const bool config_tls = |
126 | #ifdef JEMALLOC_TLS |
127 | true |
128 | #else |
129 | false |
130 | #endif |
131 | ; |
132 | static const bool config_utrace = |
133 | #ifdef JEMALLOC_UTRACE |
134 | true |
135 | #else |
136 | false |
137 | #endif |
138 | ; |
139 | static const bool config_xmalloc = |
140 | #ifdef JEMALLOC_XMALLOC |
141 | true |
142 | #else |
143 | false |
144 | #endif |
145 | ; |
146 | static const bool config_cache_oblivious = |
147 | #ifdef JEMALLOC_CACHE_OBLIVIOUS |
148 | true |
149 | #else |
150 | false |
151 | #endif |
152 | ; |
153 | /* |
154 | * Undocumented, for jemalloc development use only at the moment. See the note |
155 | * in jemalloc/internal/log.h. |
156 | */ |
157 | static const bool config_log = |
158 | #ifdef JEMALLOC_LOG |
159 | true |
160 | #else |
161 | false |
162 | #endif |
163 | ; |
164 | #ifdef JEMALLOC_HAVE_SCHED_GETCPU |
165 | /* Currently percpu_arena depends on sched_getcpu. */ |
166 | #define JEMALLOC_PERCPU_ARENA |
167 | #endif |
168 | static const bool have_percpu_arena = |
169 | #ifdef JEMALLOC_PERCPU_ARENA |
170 | true |
171 | #else |
172 | false |
173 | #endif |
174 | ; |
175 | /* |
176 | * Undocumented, and not recommended; the application should take full |
177 | * responsibility for tracking provenance. |
178 | */ |
179 | static const bool force_ivsalloc = |
180 | #ifdef JEMALLOC_FORCE_IVSALLOC |
181 | true |
182 | #else |
183 | false |
184 | #endif |
185 | ; |
186 | static const bool have_background_thread = |
187 | #ifdef JEMALLOC_BACKGROUND_THREAD |
188 | true |
189 | #else |
190 | false |
191 | #endif |
192 | ; |
193 | |
194 | #endif /* JEMALLOC_PREAMBLE_H */ |
195 | |