11 #define ABTU_LP_PROTS (PROT_READ | PROT_WRITE)
13 #if defined(HAVE_MAP_ANONYMOUS)
14 #define ABTU_LP_FLAGS_RP (MAP_PRIVATE | MAP_ANONYMOUS)
15 #define ABTU_LP_USE_MMAP 1
16 #elif defined(HAVE_MAP_ANON)
17 #define ABTU_LP_FLAGS_RP (MAP_PRIVATE | MAP_ANON)
18 #define ABTU_LP_USE_MMAP 1
20 #define ABTU_LP_USE_MMAP 0
23 #if ABTU_LP_USE_MMAP && defined(HAVE_MAP_HUGETLB)
24 #define ABTU_LP_FLAGS_HP (ABTU_LP_FLAGS_RP | MAP_HUGETLB)
25 #define ABTU_LP_USE_MMAP_HUGEPAGE 1
30 #define ABTU_LP_USE_HUGEPAGE 0
36 void *p_page = mmap(NULL, size,
ABTU_LP_PROTS, ABTU_LP_FLAGS_RP, 0, 0);
37 return p_page != MAP_FAILED ? p_page : NULL;
45 #if ABTU_LP_USE_MMAP && ABTU_LP_USE_MMAP_HUGEPAGE
46 void *p_page = mmap(NULL, size,
ABTU_LP_PROTS, ABTU_LP_FLAGS_HP, 0, 0);
47 return p_page != MAP_FAILED ? p_page : NULL;
97 for (i = 0; i < num_requested_types; i++) {
static ABTU_ret_err int ABTU_malloc(size_t size, void **p_ptr)
ABTU_ret_err int ABTU_alloc_largepage(size_t size, size_t alignment_hint, const ABTU_MEM_LARGEPAGE_TYPE *requested_types, int num_requested_types, ABTU_MEM_LARGEPAGE_TYPE *p_actual, void **p_ptr)
static ABTU_ret_err int ABTU_memalign(size_t alignment, size_t size, void **p_ptr)
int ABTU_is_supported_largepage_type(size_t size, size_t alignment_hint, ABTU_MEM_LARGEPAGE_TYPE requested)
void ABTU_free_largepage(void *ptr, size_t size, ABTU_MEM_LARGEPAGE_TYPE type)
static void mmap_free(void *p_page, size_t size)
static void * mmap_hugepage(size_t size)
static void * mmap_regular(size_t size)
static void ABTU_free(void *ptr)