diff --git a/headers/compatibility/bsd/features.h b/headers/compatibility/bsd/features.h index 4513b500e4..1450c56e50 100644 --- a/headers/compatibility/bsd/features.h +++ b/headers/compatibility/bsd/features.h @@ -12,4 +12,9 @@ #endif +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define _ISOC11_SOURCE +#endif + + #endif // _FEATURES_H diff --git a/headers/posix/stdlib.h b/headers/posix/stdlib.h index 4890caf0a2..ebaa9ec96a 100644 --- a/headers/posix/stdlib.h +++ b/headers/posix/stdlib.h @@ -49,6 +49,9 @@ extern void *calloc(size_t numElements, size_t size); extern void free(void *pointer); extern void *malloc(size_t size); extern int posix_memalign(void **_pointer, size_t alignment, size_t size); +#ifdef _ISOC11_SOURCE +extern void *aligned_alloc(size_t alignment, size_t size); +#endif extern void *realloc(void *oldPointer, size_t newSize); /* process termination */ diff --git a/src/system/libroot/posix/malloc_hoard2/wrapper.cpp b/src/system/libroot/posix/malloc_hoard2/wrapper.cpp index b1ce8008e3..c5e8c43c1a 100644 --- a/src/system/libroot/posix/malloc_hoard2/wrapper.cpp +++ b/src/system/libroot/posix/malloc_hoard2/wrapper.cpp @@ -443,6 +443,17 @@ memalign(size_t alignment, size_t size) } +extern "C" void * +aligned_alloc(size_t alignment, size_t size) +{ + if (size % alignment != 0) { + __set_errno(B_BAD_VALUE); + return NULL; + } + return memalign(alignment, size); +} + + extern "C" int posix_memalign(void **_pointer, size_t alignment, size_t size) {