xref: /freebsd/lib/libc/stdlib/malloc/jemalloc/include/jemalloc/jemalloc_FreeBSD.h (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
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