rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

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:
Msrc/mem_allocator.c | 16+++++++++++-----
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