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@install_suffix@.h"
18#  undef JEMALLOC_NO_RENAME
19#else
20#  define JEMALLOC_N(n) @private_namespace@##n
21#  include "../jemalloc@install_suffix@.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/hooks.h"
49
50#ifdef JEMALLOC_DEFINE_MADVISE_FREE
51#  define JEMALLOC_MADV_FREE 8
52#endif
53
54static const bool config_debug =
55#ifdef JEMALLOC_DEBUG
56    true
57#else
58    false
59#endif
60    ;
61static const bool have_dss =
62#ifdef JEMALLOC_DSS
63    true
64#else
65    false
66#endif
67    ;
68static const bool have_madvise_huge =
69#ifdef JEMALLOC_HAVE_MADVISE_HUGE
70    true
71#else
72    false
73#endif
74    ;
75static const bool config_fill =
76#ifdef JEMALLOC_FILL
77    true
78#else
79    false
80#endif
81    ;
82static const bool config_lazy_lock =
83#ifdef JEMALLOC_LAZY_LOCK
84    true
85#else
86    false
87#endif
88    ;
89static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF;
90static const bool config_prof =
91#ifdef JEMALLOC_PROF
92    true
93#else
94    false
95#endif
96    ;
97static const bool config_prof_libgcc =
98#ifdef JEMALLOC_PROF_LIBGCC
99    true
100#else
101    false
102#endif
103    ;
104static const bool config_prof_libunwind =
105#ifdef JEMALLOC_PROF_LIBUNWIND
106    true
107#else
108    false
109#endif
110    ;
111static const bool maps_coalesce =
112#ifdef JEMALLOC_MAPS_COALESCE
113    true
114#else
115    false
116#endif
117    ;
118static const bool config_stats =
119#ifdef JEMALLOC_STATS
120    true
121#else
122    false
123#endif
124    ;
125static const bool config_tls =
126#ifdef JEMALLOC_TLS
127    true
128#else
129    false
130#endif
131    ;
132static const bool config_utrace =
133#ifdef JEMALLOC_UTRACE
134    true
135#else
136    false
137#endif
138    ;
139static const bool config_xmalloc =
140#ifdef JEMALLOC_XMALLOC
141    true
142#else
143    false
144#endif
145    ;
146static 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 */
157static 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
168static 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 */
179static const bool force_ivsalloc =
180#ifdef JEMALLOC_FORCE_IVSALLOC
181    true
182#else
183    false
184#endif
185    ;
186static 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