From 8c094d1b2d1894aa003d975858f464ddea3dc691 Mon Sep 17 00:00:00 2001 From: Cedric Bail Date: Sun, 5 Jan 2014 22:44:50 +0900 Subject: [PATCH] evas: let's use HUGETLB when it makes sense. --- src/lib/evas/common/evas_image_main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/common/evas_image_main.c b/src/lib/evas/common/evas_image_main.c index eed7dec113..4a680d9eaf 100644 --- a/src/lib/evas/common/evas_image_main.c +++ b/src/lib/evas/common/evas_image_main.c @@ -113,6 +113,7 @@ static inline size_t _evas_common_rgba_image_surface_size(unsigned int w, unsigned int h, Eina_Bool alpha_only) { #define PAGE_SIZE (4 * 1024) +#define HUGE_PAGE_SIZE (2 * 1024 * 1024) #if defined (HAVE_SYS_MMAN_H) && (!defined (_WIN32)) # define ALIGN_TO_PAGE(Siz) (((Siz / PAGE_SIZE) + (Siz % PAGE_SIZE ? 1 : 0)) * PAGE_SIZE) #else @@ -136,7 +137,7 @@ static void * _evas_common_rgba_image_surface_mmap(unsigned int w, unsigned int h, Eina_Bool alpha_only) { size_t siz; - void *r; + void *r = MAP_FAILED; siz = _evas_common_rgba_image_surface_size(w, h, alpha_only); @@ -154,7 +155,8 @@ _evas_common_rgba_image_surface_mmap(unsigned int w, unsigned int h, Eina_Bool a # endif #endif - r = mmap(NULL, siz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0); + if (siz > ((HUGE_PAGE_SIZE * 75) / 100)) + r = mmap(NULL, siz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0); if (r == MAP_FAILED) r = mmap(NULL, siz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (r == MAP_FAILED)