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