typedef struct _zend_mm_chunk zend_mm_chunk;
typedef struct _zend_mm_huge_list zend_mm_huge_list;
-#ifdef MAP_HUGETLB
int zend_mm_use_huge_pages = 0;
-#endif
/*
* Memory is retrived from OS by chunks of fixed size 2MB.
return NULL;
} else if (ZEND_MM_ALIGNED_OFFSET(ptr, alignment) == 0) {
#ifdef MADV_HUGEPAGE
- madvise(ptr, size, MADV_HUGEPAGE);
+ if (zend_mm_use_huge_pages) {
+ madvise(ptr, size, MADV_HUGEPAGE);
+ }
#endif
return ptr;
} else {
zend_mm_munmap((char*)ptr + size, alignment - REAL_PAGE_SIZE);
}
# ifdef MADV_HUGEPAGE
- madvise(ptr, size, MADV_HUGEPAGE);
+ if (zend_mm_use_huge_pages) {
+ madvise(ptr, size, MADV_HUGEPAGE);
+ }
# endif
#endif
return ptr;
static void alloc_globals_ctor(zend_alloc_globals *alloc_globals)
{
+ char *tmp;
#if ZEND_MM_CUSTOM
- char *tmp = getenv("USE_ZEND_ALLOC");
+ tmp = getenv("USE_ZEND_ALLOC");
if (tmp && !zend_atoi(tmp, 0)) {
alloc_globals->mm_heap = malloc(sizeof(zend_mm_heap));
return;
}
#endif
-#ifdef MAP_HUGETLB
tmp = getenv("USE_ZEND_ALLOC_HUGE_PAGES");
if (tmp && zend_atoi(tmp, 0)) {
zend_mm_use_huge_pages = 1;
}
-#endif
ZEND_TSRMLS_CACHE_UPDATE();
alloc_globals->mm_heap = zend_mm_init();
}