1234370Sjasone/* 2234370Sjasone * Override settings that were generated in jemalloc_defs.h as necessary. 3234370Sjasone */ 4234370Sjasone 5234370Sjasone#undef JEMALLOC_OVERRIDE_VALLOC 6234370Sjasone 7234370Sjasone#ifndef MALLOC_PRODUCTION 8234370Sjasone#define JEMALLOC_DEBUG 9234370Sjasone#endif 10234370Sjasone 11298741Sandrew#undef JEMALLOC_DSS 12298741Sandrew 13234370Sjasone/* 14234370Sjasone * The following are architecture-dependent, so conditionally define them for 15234370Sjasone * each supported architecture. 16234370Sjasone */ 17234370Sjasone#undef JEMALLOC_TLS_MODEL 18234370Sjasone#undef STATIC_PAGE_SHIFT 19234370Sjasone#undef LG_SIZEOF_PTR 20234370Sjasone#undef LG_SIZEOF_INT 21234370Sjasone#undef LG_SIZEOF_LONG 22234370Sjasone#undef LG_SIZEOF_INTMAX_T 23234370Sjasone 24234370Sjasone#ifdef __i386__ 25234370Sjasone# define LG_SIZEOF_PTR 2 26234370Sjasone# define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 27234370Sjasone#endif 28234370Sjasone#ifdef __ia64__ 29234370Sjasone# define LG_SIZEOF_PTR 3 30234370Sjasone#endif 31234370Sjasone#ifdef __sparc64__ 32234370Sjasone# define LG_SIZEOF_PTR 3 33234370Sjasone# define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 34234370Sjasone#endif 35234370Sjasone#ifdef __amd64__ 36234370Sjasone# define LG_SIZEOF_PTR 3 37234370Sjasone# define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec"))) 38234370Sjasone#endif 39234370Sjasone#ifdef __arm__ 40234370Sjasone# define LG_SIZEOF_PTR 2 41234370Sjasone#endif 42286877Sjasone#ifdef __aarch64__ 43286877Sjasone# define LG_SIZEOF_PTR 3 44286877Sjasone#endif 45234370Sjasone#ifdef __mips__ 46234646Sjchandra#ifdef __mips_n64 47234646Sjchandra# define LG_SIZEOF_PTR 3 48234646Sjchandra#else 49234370Sjasone# define LG_SIZEOF_PTR 2 50234370Sjasone#endif 51234646Sjchandra#endif 52234370Sjasone#ifdef __powerpc64__ 53234370Sjasone# define LG_SIZEOF_PTR 3 54234370Sjasone#elif defined(__powerpc__) 55234370Sjasone# define LG_SIZEOF_PTR 2 56234370Sjasone#endif 57294573Sbr#ifdef __riscv__ 58294573Sbr# define LG_SIZEOF_PTR 3 59294573Sbr#endif 60234370Sjasone 61234370Sjasone#ifndef JEMALLOC_TLS_MODEL 62234370Sjasone# define JEMALLOC_TLS_MODEL /* Default. */ 63234370Sjasone#endif 64234370Sjasone 65234370Sjasone#define STATIC_PAGE_SHIFT PAGE_SHIFT 66234370Sjasone#define LG_SIZEOF_INT 2 67234370Sjasone#define LG_SIZEOF_LONG LG_SIZEOF_PTR 68234370Sjasone#define LG_SIZEOF_INTMAX_T 3 69234370Sjasone 70286907Sjasone#undef CPU_SPINWAIT 71286907Sjasone#include <machine/cpu.h> 72286907Sjasone#include <machine/cpufunc.h> 73286907Sjasone#define CPU_SPINWAIT cpu_spinwait() 74286907Sjasone 75234370Sjasone/* Disable lazy-lock machinery, mangle isthreaded, and adjust its type. */ 76234370Sjasone#undef JEMALLOC_LAZY_LOCK 77234370Sjasoneextern int __isthreaded; 78234370Sjasone#define isthreaded ((bool)__isthreaded) 79234370Sjasone 80234370Sjasone/* Mangle. */ 81250991Smarcel#undef je_malloc 82250991Smarcel#undef je_calloc 83296221Sjasone#undef je_posix_memalign 84296221Sjasone#undef je_aligned_alloc 85250991Smarcel#undef je_realloc 86250991Smarcel#undef je_free 87250991Smarcel#undef je_malloc_usable_size 88261071Sjasone#undef je_mallocx 89261071Sjasone#undef je_rallocx 90261071Sjasone#undef je_xallocx 91261071Sjasone#undef je_sallocx 92261071Sjasone#undef je_dallocx 93296221Sjasone#undef je_sdallocx 94261071Sjasone#undef je_nallocx 95296221Sjasone#undef je_mallctl 96296221Sjasone#undef je_mallctlnametomib 97296221Sjasone#undef je_mallctlbymib 98296221Sjasone#undef je_malloc_stats_print 99250991Smarcel#undef je_allocm 100250991Smarcel#undef je_rallocm 101250991Smarcel#undef je_sallocm 102250991Smarcel#undef je_dallocm 103250991Smarcel#undef je_nallocm 104250991Smarcel#define je_malloc __malloc 105250991Smarcel#define je_calloc __calloc 106296221Sjasone#define je_posix_memalign __posix_memalign 107296221Sjasone#define je_aligned_alloc __aligned_alloc 108250991Smarcel#define je_realloc __realloc 109250991Smarcel#define je_free __free 110250991Smarcel#define je_malloc_usable_size __malloc_usable_size 111261071Sjasone#define je_mallocx __mallocx 112261071Sjasone#define je_rallocx __rallocx 113261071Sjasone#define je_xallocx __xallocx 114261071Sjasone#define je_sallocx __sallocx 115261071Sjasone#define je_dallocx __dallocx 116296221Sjasone#define je_sdallocx __sdallocx 117261071Sjasone#define je_nallocx __nallocx 118296221Sjasone#define je_mallctl __mallctl 119296221Sjasone#define je_mallctlnametomib __mallctlnametomib 120296221Sjasone#define je_mallctlbymib __mallctlbymib 121296221Sjasone#define je_malloc_stats_print __malloc_stats_print 122250991Smarcel#define je_allocm __allocm 123250991Smarcel#define je_rallocm __rallocm 124250991Smarcel#define je_sallocm __sallocm 125250991Smarcel#define je_dallocm __dallocm 126250991Smarcel#define je_nallocm __nallocm 127234370Sjasone#define open _open 128234370Sjasone#define read _read 129234370Sjasone#define write _write 130234370Sjasone#define close _close 131234370Sjasone#define pthread_mutex_lock _pthread_mutex_lock 132234370Sjasone#define pthread_mutex_unlock _pthread_mutex_unlock 133250991Smarcel 134250991Smarcel#ifdef JEMALLOC_C_ 135250991Smarcel/* 136250991Smarcel * Define 'weak' symbols so that an application can have its own versions 137250991Smarcel * of malloc, calloc, realloc, free, et al. 138250991Smarcel */ 139250991Smarcel__weak_reference(__malloc, malloc); 140250991Smarcel__weak_reference(__calloc, calloc); 141296221Sjasone__weak_reference(__posix_memalign, posix_memalign); 142296221Sjasone__weak_reference(__aligned_alloc, aligned_alloc); 143250991Smarcel__weak_reference(__realloc, realloc); 144250991Smarcel__weak_reference(__free, free); 145250991Smarcel__weak_reference(__malloc_usable_size, malloc_usable_size); 146261071Sjasone__weak_reference(__mallocx, mallocx); 147261071Sjasone__weak_reference(__rallocx, rallocx); 148261071Sjasone__weak_reference(__xallocx, xallocx); 149261071Sjasone__weak_reference(__sallocx, sallocx); 150261071Sjasone__weak_reference(__dallocx, dallocx); 151296221Sjasone__weak_reference(__sdallocx, sdallocx); 152261071Sjasone__weak_reference(__nallocx, nallocx); 153296221Sjasone__weak_reference(__mallctl, mallctl); 154296221Sjasone__weak_reference(__mallctlnametomib, mallctlnametomib); 155296221Sjasone__weak_reference(__mallctlbymib, mallctlbymib); 156296221Sjasone__weak_reference(__malloc_stats_print, malloc_stats_print); 157250991Smarcel__weak_reference(__allocm, allocm); 158250991Smarcel__weak_reference(__rallocm, rallocm); 159250991Smarcel__weak_reference(__sallocm, sallocm); 160250991Smarcel__weak_reference(__dallocm, dallocm); 161250991Smarcel__weak_reference(__nallocm, nallocm); 162250991Smarcel#endif 163