jemalloc_FreeBSD.h revision 272461
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	MALLOC_PRODUCTION
9#endif
10
11#ifndef MALLOC_PRODUCTION
12#define	JEMALLOC_DEBUG
13#endif
14
15/*
16 * The following are architecture-dependent, so conditionally define them for
17 * each supported architecture.
18 */
19#undef CPU_SPINWAIT
20#undef JEMALLOC_TLS_MODEL
21#undef STATIC_PAGE_SHIFT
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_SIZEOF_PTR		2
29#  define CPU_SPINWAIT		__asm__ volatile("pause")
30#  define JEMALLOC_TLS_MODEL	__attribute__((tls_model("initial-exec")))
31#endif
32#ifdef __ia64__
33#  define LG_SIZEOF_PTR		3
34#endif
35#ifdef __sparc64__
36#  define LG_SIZEOF_PTR		3
37#  define JEMALLOC_TLS_MODEL	__attribute__((tls_model("initial-exec")))
38#endif
39#ifdef __amd64__
40#  define LG_SIZEOF_PTR		3
41#  define CPU_SPINWAIT		__asm__ volatile("pause")
42#  define JEMALLOC_TLS_MODEL	__attribute__((tls_model("initial-exec")))
43#endif
44#ifdef __arm__
45#  define LG_SIZEOF_PTR		2
46#endif
47#ifdef __mips__
48#ifdef __mips_n64
49#  define LG_SIZEOF_PTR		3
50#else
51#  define LG_SIZEOF_PTR		2
52#endif
53#endif
54#ifdef __powerpc64__
55#  define LG_SIZEOF_PTR		3
56#elif defined(__powerpc__)
57#  define LG_SIZEOF_PTR		2
58#endif
59
60#ifndef JEMALLOC_TLS_MODEL
61#  define JEMALLOC_TLS_MODEL	/* Default. */
62#endif
63
64#define	STATIC_PAGE_SHIFT	PAGE_SHIFT
65#define	LG_SIZEOF_INT		2
66#define	LG_SIZEOF_LONG		LG_SIZEOF_PTR
67#define	LG_SIZEOF_INTMAX_T	3
68
69/* Disable lazy-lock machinery, mangle isthreaded, and adjust its type. */
70#undef JEMALLOC_LAZY_LOCK
71extern int __isthreaded;
72#define	isthreaded		((bool)__isthreaded)
73
74/* Mangle. */
75#undef je_malloc
76#undef je_calloc
77#undef je_realloc
78#undef je_free
79#undef je_posix_memalign
80#undef je_malloc_usable_size
81#undef je_allocm
82#undef je_rallocm
83#undef je_sallocm
84#undef je_dallocm
85#undef je_nallocm
86#define	je_malloc		__malloc
87#define	je_calloc		__calloc
88#define	je_realloc		__realloc
89#define	je_free			__free
90#define	je_posix_memalign	__posix_memalign
91#define	je_malloc_usable_size	__malloc_usable_size
92#define	je_allocm		__allocm
93#define	je_rallocm		__rallocm
94#define	je_sallocm		__sallocm
95#define	je_dallocm		__dallocm
96#define	je_nallocm		__nallocm
97#define	open			_open
98#define	read			_read
99#define	write			_write
100#define	close			_close
101#define	pthread_mutex_lock	_pthread_mutex_lock
102#define	pthread_mutex_unlock	_pthread_mutex_unlock
103
104#ifdef JEMALLOC_C_
105/*
106 * Define 'weak' symbols so that an application can have its own versions
107 * of malloc, calloc, realloc, free, et al.
108 */
109__weak_reference(__malloc, malloc);
110__weak_reference(__calloc, calloc);
111__weak_reference(__realloc, realloc);
112__weak_reference(__free, free);
113__weak_reference(__posix_memalign, posix_memalign);
114__weak_reference(__malloc_usable_size, malloc_usable_size);
115__weak_reference(__allocm, allocm);
116__weak_reference(__rallocm, rallocm);
117__weak_reference(__sallocm, sallocm);
118__weak_reference(__dallocm, dallocm);
119__weak_reference(__nallocm, nallocm);
120#endif
121
122