From 48b4057fc950a3d60a8a82fa269dde5d52a2c922 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 25 Feb 2020 19:57:29 +0100 Subject: set errno when bump end is reached --- src/bump_alloc.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/bump_alloc.h') diff --git a/src/bump_alloc.h b/src/bump_alloc.h index 300feef..6a651a1 100644 --- a/src/bump_alloc.h +++ b/src/bump_alloc.h @@ -1,4 +1,5 @@ #include +#include #include /* NULL, size_t */ #include /* uintptr_t */ #include /* mmap */ @@ -24,7 +25,7 @@ static inline void* bump_up(size_t size, size_t align) { assert(align % 2 == 0); if (unlikely(tsd == NULL)) { - void* mem_start = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + void* mem_start = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_HUGETLB, -1, 0); if(mem_start == MAP_FAILED) { perror("mmap"); return NULL; @@ -38,9 +39,10 @@ static inline void* bump_up(size_t size, size_t align) { uintptr_t aligned = (tsd->ptr + align - 1) & ~(align - 1); uintptr_t new_ptr = aligned + size; - if (new_ptr > tsd->end) + if (new_ptr > tsd->end) { + errno = ENOMEM; return NULL; - else { + } else { tsd->ptr = new_ptr; return (void*)aligned; } -- cgit v1.2.3