commit da0effe709b9dbeb8752a278f819078c8bb8fbba
parent 5dcb0852f39b365963ada1813ccd8ccd3c5a3cfd
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 27 Oct 2015 18:00:24 +0100
Memory allocator specifics for MACOSX
Diffstat:
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/mem_allocator.c b/src/mem_allocator.c
@@ -19,7 +19,11 @@
#include "mutex.h"
#include <errno.h>
-#include <malloc.h>
+#if defined(OS_MACH)
+ #include <malloc/malloc.h>
+#else
+ #include <malloc.h>
+#endif
#include <string.h>
#ifdef OS_WINDOWS
@@ -44,7 +48,7 @@ mem_alloc(const size_t size)
{
void* mem = NULL;
if(size) {
-#if defined(OS_UNIX)
+#if defined(OS_UNIX) || defined (OS_MACH)
mem = malloc(size);
#elif defined(OS_WINDOWS)
const size_t DEFAULT_ALIGNMENT = 16;
@@ -99,7 +103,7 @@ mem_realloc(void* mem, const size_t size)
(mem, size + MEM_HEADER_SIZE, ((size_t*)mem)[0], MEM_HEADER_SIZE);
((size_t*)new_mem)[1] = size + MEM_HEADER_SIZE;
new_mem = ((char*)new_mem) + MEM_HEADER_SIZE;
-#elif defined(OS_UNIX)
+#elif defined(OS_UNIX) || defined(OS_MACH)
new_mem = realloc( mem, size );
#else
#error "Unsupported OS"
@@ -123,7 +127,7 @@ mem_alloc_aligned(const size_t size, const size_t alignment)
((size_t*)mem)[0] = alignment;
((size_t*)mem)[1] = size + MEM_HEADER_SIZE;
mem = ((char*)mem) + MEM_HEADER_SIZE;
-#elif defined(OS_UNIX)
+#elif defined(OS_UNIX) || defined(OS_MACH)
const int result = posix_memalign
(&mem, (alignment < sizeof(void*)) ? sizeof(void*) : alignment, size);
(void)result; /* avoid warning in Release */
@@ -154,7 +158,7 @@ mem_rm(void* mem)
#if defined(OS_WINDOWS)
mem = ((char*)mem) - MEM_HEADER_SIZE;
_aligned_free( mem );
-#elif defined(OS_UNIX)
+#elif defined(OS_UNIX) || defined(OS_MACH)
free( mem );
#else
#error "Unsupported OS"
@@ -172,6 +176,8 @@ mem_size(void* mem)
mem_size = ((size_t*)raw_mem)[1];
#elif defined(OS_UNIX)
mem_size = malloc_usable_size(mem);
+#elif defined(OS_MACH)
+ mem_size = malloc_size(mem);
#else
#error "Unsupported OS"
#endif