1 /* 2 * Override settings that were generated in jemalloc_defs.h as necessary. 3 */ 4 5 #undef JEMALLOC_OVERRIDE_VALLOC 6 7 #ifndef MALLOC_PRODUCTION 8 #define JEMALLOC_DEBUG 9 #endif 10 11 #undef JEMALLOC_DSS 12 13 #undef JEMALLOC_BACKGROUND_THREAD 14 15 /* 16 * The following are architecture-dependent, so conditionally define them for 17 * each supported architecture. 18 */ 19 #undef JEMALLOC_TLS_MODEL 20 #undef LG_PAGE 21 #undef LG_VADDR 22 #undef LG_SIZEOF_PTR 23 #undef LG_SIZEOF_INT 24 #undef LG_SIZEOF_LONG 25 #undef LG_SIZEOF_INTMAX_T 26 27 #ifdef __i386__ 28 # define LG_VADDR 32 29 # define LG_SIZEOF_PTR 2 30 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 31 #endif 32 #ifdef __ia64__ 33 # define LG_VADDR 64 34 # define LG_SIZEOF_PTR 3 35 #endif 36 #ifdef __sparc64__ 37 # define LG_VADDR 64 38 # define LG_SIZEOF_PTR 3 39 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 40 #endif 41 #ifdef __amd64__ 42 #ifdef _USE_LG_VADDR_WIDE 43 # define LG_VADDR 64 44 #else 45 # define LG_VADDR 48 46 #endif 47 # define LG_SIZEOF_PTR 3 48 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 49 #endif 50 #ifdef __arm__ 51 # define LG_VADDR 32 52 # define LG_SIZEOF_PTR 2 53 #endif 54 #ifdef __aarch64__ 55 # define LG_VADDR 48 56 # define LG_SIZEOF_PTR 3 57 #endif 58 #ifdef __mips__ 59 #ifdef __mips_n64 60 # define LG_VADDR 64 61 # define LG_SIZEOF_PTR 3 62 #else 63 # define LG_VADDR 32 64 # define LG_SIZEOF_PTR 2 65 #endif 66 #endif 67 #ifdef __powerpc64__ 68 # define LG_VADDR 64 69 # define LG_SIZEOF_PTR 3 70 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 71 #elif defined(__powerpc__) 72 # define LG_VADDR 32 73 # define LG_SIZEOF_PTR 2 74 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 75 #endif 76 #ifdef __riscv 77 # define LG_VADDR 48 78 # define LG_SIZEOF_PTR 3 79 #endif 80 81 #if LG_VADDR > 32 82 # define JEMALLOC_RETAIN 83 #endif 84 85 #ifndef JEMALLOC_TLS_MODEL 86 # define JEMALLOC_TLS_MODEL /* Default. */ 87 #endif 88 89 #define LG_PAGE PAGE_SHIFT 90 #define LG_SIZEOF_INT 2 91 #define LG_SIZEOF_LONG LG_SIZEOF_PTR 92 #define LG_SIZEOF_INTMAX_T 3 93 94 #undef CPU_SPINWAIT 95 #include <machine/cpu.h> 96 #include <machine/cpufunc.h> 97 #define CPU_SPINWAIT cpu_spinwait() 98 99 /* Disable lazy-lock machinery, mangle isthreaded, and adjust its type. */ 100 #undef JEMALLOC_LAZY_LOCK 101 extern int __isthreaded; 102 #define isthreaded ((bool)__isthreaded) 103 104 /* Mangle. */ 105 #undef je_malloc 106 #undef je_calloc 107 #undef je_posix_memalign 108 #undef je_aligned_alloc 109 #undef je_realloc 110 #undef je_free 111 #undef je_malloc_usable_size 112 #undef je_mallocx 113 #undef je_rallocx 114 #undef je_xallocx 115 #undef je_sallocx 116 #undef je_dallocx 117 #undef je_sdallocx 118 #undef je_nallocx 119 #undef je_mallctl 120 #undef je_mallctlnametomib 121 #undef je_mallctlbymib 122 #undef je_malloc_stats_print 123 #undef je_allocm 124 #undef je_rallocm 125 #undef je_dallocm 126 #undef je_nallocm 127 #define je_malloc __malloc 128 #define je_calloc __calloc 129 #define je_posix_memalign __posix_memalign 130 #define je_aligned_alloc __aligned_alloc 131 #define je_realloc __realloc 132 #define je_free __free 133 #define je_malloc_usable_size __malloc_usable_size 134 #define je_mallocx __mallocx 135 #define je_rallocx __rallocx 136 #define je_xallocx __xallocx 137 #define je_sallocx __sallocx 138 #define je_dallocx __dallocx 139 #define je_sdallocx __sdallocx 140 #define je_nallocx __nallocx 141 #define je_mallctl __mallctl 142 #define je_mallctlnametomib __mallctlnametomib 143 #define je_mallctlbymib __mallctlbymib 144 #define je_malloc_stats_print __malloc_stats_print 145 #define open _open 146 #define read _read 147 #define write _write 148 #define close _close 149 #define pthread_join _pthread_join 150 #define pthread_once _pthread_once 151 #define pthread_self _pthread_self 152 #define pthread_equal _pthread_equal 153 #define pthread_mutex_lock _pthread_mutex_lock 154 #define pthread_mutex_trylock _pthread_mutex_trylock 155 #define pthread_mutex_unlock _pthread_mutex_unlock 156 #define pthread_cond_init _pthread_cond_init 157 #define pthread_cond_wait _pthread_cond_wait 158 #define pthread_cond_timedwait _pthread_cond_timedwait 159 #define pthread_cond_signal _pthread_cond_signal 160 161 #ifdef JEMALLOC_C_ 162 /* 163 * Define 'weak' symbols so that an application can have its own versions 164 * of malloc, calloc, realloc, free, et al. 165 */ 166 __weak_reference(__malloc, malloc); 167 __weak_reference(__calloc, calloc); 168 __weak_reference(__posix_memalign, posix_memalign); 169 __weak_reference(__aligned_alloc, aligned_alloc); 170 __weak_reference(__realloc, realloc); 171 __weak_reference(__free, free); 172 __weak_reference(__malloc_usable_size, malloc_usable_size); 173 __weak_reference(__mallocx, mallocx); 174 __weak_reference(__rallocx, rallocx); 175 __weak_reference(__xallocx, xallocx); 176 __weak_reference(__sallocx, sallocx); 177 __weak_reference(__dallocx, dallocx); 178 __weak_reference(__sdallocx, sdallocx); 179 __weak_reference(__nallocx, nallocx); 180 __weak_reference(__mallctl, mallctl); 181 __weak_reference(__mallctlnametomib, mallctlnametomib); 182 __weak_reference(__mallctlbymib, mallctlbymib); 183 __weak_reference(__malloc_stats_print, malloc_stats_print); 184 __weak_reference(je_allocm, weak_allocm); 185 __weak_reference(je_rallocm, weak_rallocm); 186 __weak_reference(je_sallocm, weak_sallocm); 187 __weak_reference(je_dallocm, weak_dallocm); 188 __weak_reference(je_nallocm, weak_nallocm); 189 __sym_compat(__allocm, je_allocm, FBSD_1.3); 190 __sym_compat(__rallocm, je_rallocm, FBSD_1.3); 191 __sym_compat(__sallocm, je_sallocm, FBSD_1.3); 192 __sym_compat(__dallocm, je_dallocm, FBSD_1.3); 193 __sym_compat(__nallocm, je_nallocm, FBSD_1.3); 194 __sym_compat(allocm, weak_allocm, FBSD_1.3); 195 __sym_compat(rallocm, weak_rallocm, FBSD_1.3); 196 __sym_compat(sallocm, weak_sallocm, FBSD_1.3); 197 __sym_compat(dallocm, weak_dallocm, FBSD_1.3); 198 __sym_compat(nallocm, weak_nallocm, FBSD_1.3); 199 #endif 200