diff --git a/include/villas/memory.h b/include/villas/memory.h index d66955727..1261f3efa 100644 --- a/include/villas/memory.h +++ b/include/villas/memory.h @@ -41,6 +41,11 @@ struct memzone { size_t len; }; +/** Allocate \p len bytes memory of type \p m. + * + * @retval NULL If allocation failed. + * @retval <>0 If allocation was successful. + */ void * memory_alloc(const struct memtype *m, size_t len); void * memory_alloc_aligned(const struct memtype *m, size_t len, size_t alignment); diff --git a/lib/memory.c b/lib/memory.c index df4eccd7e..dd0cb3511 100644 --- a/lib/memory.c +++ b/lib/memory.c @@ -60,7 +60,14 @@ static void * memory_hugepage_alloc(size_t len) flags |= MAP_HUGETLB | MAP_LOCKED; #endif - return mmap(NULL, len, prot, flags, -1, 0); + void *ret = mmap(NULL, len, prot, flags, -1, 0); + + if (ret == MAP_FAILED) { + info("Failed to allocate huge pages: Check https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt"); + return NULL; + } + + return ret; } static int memory_hugepage_free(void *ptr, size_t len)