Home | History | Annotate | Download | only in internal
      1 #ifndef JEMALLOC_PREAMBLE_H
      2 #define JEMALLOC_PREAMBLE_H
      3 
      4 #include "jemalloc_internal_defs.h"
      5 #include "jemalloc/internal/jemalloc_internal_decls.h"
      6 
      7 #ifdef JEMALLOC_UTRACE
      8 #include <sys/ktrace.h>
      9 #endif
     10 
     11 #define JEMALLOC_NO_DEMANGLE
     12 #ifdef JEMALLOC_JET
     13 #  undef JEMALLOC_IS_MALLOC
     14 #  define JEMALLOC_N(n) jet_##n
     15 #  include "jemalloc/internal/public_namespace.h"
     16 #  define JEMALLOC_NO_RENAME
     17 #  include "../jemalloc@install_suffix@.h"
     18 #  undef JEMALLOC_NO_RENAME
     19 #else
     20 #  define JEMALLOC_N(n) @private_namespace@##n
     21 #  include "../jemalloc@install_suffix@.h"
     22 #endif
     23 
     24 #if (defined(JEMALLOC_OSATOMIC) || defined(JEMALLOC_OSSPIN))
     25 #include <libkern/OSAtomic.h>
     26 #endif
     27 
     28 #ifdef JEMALLOC_ZONE
     29 #include <mach/mach_error.h>
     30 #include <mach/mach_init.h>
     31 #include <mach/vm_map.h>
     32 #endif
     33 
     34 #include "jemalloc/internal/jemalloc_internal_macros.h"
     35 
     36 /*
     37  * Note that the ordering matters here; the hook itself is name-mangled.  We
     38  * want the inclusion of hooks to happen early, so that we hook as much as
     39  * possible.
     40  */
     41 #ifndef JEMALLOC_NO_PRIVATE_NAMESPACE
     42 #  ifndef JEMALLOC_JET
     43 #    include "jemalloc/internal/private_namespace.h"
     44 #  else
     45 #    include "jemalloc/internal/private_namespace_jet.h"
     46 #  endif
     47 #endif
     48 #include "jemalloc/internal/hooks.h"
     49 
     50 #ifdef JEMALLOC_DEFINE_MADVISE_FREE
     51 #  define JEMALLOC_MADV_FREE 8
     52 #endif
     53 
     54 static const bool config_debug =
     55 #ifdef JEMALLOC_DEBUG
     56     true
     57 #else
     58     false
     59 #endif
     60     ;
     61 static const bool have_dss =
     62 #ifdef JEMALLOC_DSS
     63     true
     64 #else
     65     false
     66 #endif
     67     ;
     68 static const bool have_madvise_huge =
     69 #ifdef JEMALLOC_HAVE_MADVISE_HUGE
     70     true
     71 #else
     72     false
     73 #endif
     74     ;
     75 static const bool config_fill =
     76 #ifdef JEMALLOC_FILL
     77     true
     78 #else
     79     false
     80 #endif
     81     ;
     82 static const bool config_lazy_lock =
     83 #ifdef JEMALLOC_LAZY_LOCK
     84     true
     85 #else
     86     false
     87 #endif
     88     ;
     89 static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF;
     90 static const bool config_prof =
     91 #ifdef JEMALLOC_PROF
     92     true
     93 #else
     94     false
     95 #endif
     96     ;
     97 static const bool config_prof_libgcc =
     98 #ifdef JEMALLOC_PROF_LIBGCC
     99     true
    100 #else
    101     false
    102 #endif
    103     ;
    104 static const bool config_prof_libunwind =
    105 #ifdef JEMALLOC_PROF_LIBUNWIND
    106     true
    107 #else
    108     false
    109 #endif
    110     ;
    111 static const bool maps_coalesce =
    112 #ifdef JEMALLOC_MAPS_COALESCE
    113     true
    114 #else
    115     false
    116 #endif
    117     ;
    118 static const bool config_stats =
    119 #ifdef JEMALLOC_STATS
    120     true
    121 #else
    122     false
    123 #endif
    124     ;
    125 static const bool config_tls =
    126 #ifdef JEMALLOC_TLS
    127     true
    128 #else
    129     false
    130 #endif
    131     ;
    132 static const bool config_utrace =
    133 #ifdef JEMALLOC_UTRACE
    134     true
    135 #else
    136     false
    137 #endif
    138     ;
    139 static const bool config_xmalloc =
    140 #ifdef JEMALLOC_XMALLOC
    141     true
    142 #else
    143     false
    144 #endif
    145     ;
    146 static const bool config_cache_oblivious =
    147 #ifdef JEMALLOC_CACHE_OBLIVIOUS
    148     true
    149 #else
    150     false
    151 #endif
    152     ;
    153 /*
    154  * Undocumented, for jemalloc development use only at the moment.  See the note
    155  * in jemalloc/internal/log.h.
    156  */
    157 static const bool config_log =
    158 #ifdef JEMALLOC_LOG
    159     true
    160 #else
    161     false
    162 #endif
    163     ;
    164 #ifdef JEMALLOC_HAVE_SCHED_GETCPU
    165 /* Currently percpu_arena depends on sched_getcpu. */
    166 #define JEMALLOC_PERCPU_ARENA
    167 #endif
    168 static const bool have_percpu_arena =
    169 #ifdef JEMALLOC_PERCPU_ARENA
    170     true
    171 #else
    172     false
    173 #endif
    174     ;
    175 /*
    176  * Undocumented, and not recommended; the application should take full
    177  * responsibility for tracking provenance.
    178  */
    179 static const bool force_ivsalloc =
    180 #ifdef JEMALLOC_FORCE_IVSALLOC
    181     true
    182 #else
    183     false
    184 #endif
    185     ;
    186 static const bool have_background_thread =
    187 #ifdef JEMALLOC_BACKGROUND_THREAD
    188     true
    189 #else
    190     false
    191 #endif
    192     ;
    193 
    194 #endif /* JEMALLOC_PREAMBLE_H */
    195