text: #ifndef JEMALLOC_INTERNAL_BASE_TYPES_H
  #define JEMALLOC_INTERNAL_BASE_TYPES_H
  
  typedef struct base_block_s base_block_t;
  typedef struct base_s base_t;
  
  #define METADATA_THP_DEFAULT metadata_thp_disabled
  
  /*
   * In auto mode, arenas switch to huge pages for the base allocator on the
   * second base block.  a0 switches to thp on the 5th block (after 20 megabytes
   * of metadata), since more metadata (e.g. rtree nodes) come from a0's base.
   */
  
  #define BASE_AUTO_THP_THRESHOLD    2
  #define BASE_AUTO_THP_THRESHOLD_A0 5
  
  typedef enum {
      metadata_thp_disabled = 0,
      /*
       * Lazily enable hugepage for metadata. To avoid high RSS caused by THP
       * + low usage arena (i.e. THP becomes a significant percentage), the
       * "auto" option only starts using THP after a base allocator used up
       * the first THP region.  Starting from the second hugepage (in a single
       * arena), "auto" behaves the same as "always", i.e. madvise hugepage
       * right away.
       */
              metadata_thp_auto = 1,
      metadata_thp_always = 2,
      metadata_thp_mode_limit = 3
  } metadata_thp_mode_t;
  
  #endif /* JEMALLOC_INTERNAL_BASE_TYPES_H */
  