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