diff --git a/skynet-src/malloc_hook.c b/skynet-src/malloc_hook.c index 00e635c0..02b6c091 100644 --- a/skynet-src/malloc_hook.c +++ b/skynet-src/malloc_hook.c @@ -209,6 +209,14 @@ skynet_aligned_alloc(size_t alignment, size_t size) { return fill_prefix(ptr); } +int +skynet_posix_memalign(void **memptr, size_t alignment, size_t size) { + int err = je_posix_memalign(memptr, alignment, size + PREFIX_SIZE); + if (err) malloc_oom(size); + fill_prefix(*memptr); + return err; +} + #else // for skynet_lalloc use diff --git a/skynet-src/skynet_malloc.h b/skynet-src/skynet_malloc.h index 81c1c603..57f2db13 100644 --- a/skynet-src/skynet_malloc.h +++ b/skynet-src/skynet_malloc.h @@ -9,6 +9,7 @@ #define skynet_free free #define skynet_memalign memalign #define skynet_aligned_alloc aligned_alloc +#define skynet_posix_memalign posix_memalign void * skynet_malloc(size_t sz); void * skynet_calloc(size_t nmemb,size_t size); @@ -18,5 +19,6 @@ char * skynet_strdup(const char *str); void * skynet_lalloc(void *ptr, size_t osize, size_t nsize); // use for lua void * skynet_memalign(size_t alignment, size_t size); void * skynet_aligned_alloc(size_t alignment, size_t size); +int skynet_posix_memalign(void **memptr, size_t alignment, size_t size); #endif