From f4c041f90a02e27474a506f4f81c00927a3da24e Mon Sep 17 00:00:00 2001
From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr>
Date: Wed, 17 May 2017 16:44:36 +0200
Subject: [PATCH] posix_memalign in dlmalloc

---
 .../e-acsl/contrib/libdlmalloc/dlmalloc.c     | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
index bab900b6b2b..9e4b146d305 100644
--- a/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
+++ b/src/plugins/e-acsl/contrib/libdlmalloc/dlmalloc.c
@@ -820,6 +820,7 @@ extern "C" {
 #define mspace_realloc_in_place       mspace_prefix(mspace_realloc_in_place)
 #define mspace_memalign               mspace_prefix(mspace_memalign)
 #define mspace_aligned_alloc          mspace_prefix(mspace_aligned_alloc)
+#define mspace_posix_memalign         mspace_prefix(mspace_posix_memalign)
 #define mspace_independent_calloc     mspace_prefix(mspace_independent_calloc)
 #define mspace_independent_comalloc   mspace_prefix(mspace_independent_comalloc)
 #define mspace_bulk_free              mspace_prefix(mspace_bulk_free)
@@ -1399,6 +1400,12 @@ DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes
 */
 DLMALLOC_EXPORT void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes);
 
+/*
+  mspace_posix_memalign behaves as posix_memalign, but operates within
+  the given space.
+*/
+DLMALLOC_EXPORT int mspace_posix_memalign(mspace msp, void **pp, size_t alignment, size_t bytes);
+
 /*
   mspace_independent_calloc behaves as independent_calloc, but
   operates within the given space.
@@ -5877,6 +5884,19 @@ void* mspace_aligned_alloc(mspace msp, size_t alignment, size_t bytes) {
   return mspace_aligned_alloc(msp, alignment, bytes);
 }
 
+int mspace_posix_memalign(mspace msp, void **memptr, size_t alignment, size_t bytes) {
+  if (bytes == 0) {
+    *memptr = NULL;
+    return 0;
+  }
+  void *res = mspace_aligned_alloc(msp, alignment, bytes);
+  if (res) {
+    *memptr = res;
+    return 0;
+  }
+  return 1;
+}
+
 void** mspace_independent_calloc(mspace msp, size_t n_elements,
                                  size_t elem_size, void* chunks[]) {
   size_t sz = elem_size; /* serves as 1-element array */
-- 
GitLab