reverse dependency order of memalign and aligned_alloc
authorRich Felker <dalias@aerifal.cx>
Wed, 3 Jun 2020 23:11:23 +0000 (19:11 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 3 Jun 2020 23:11:23 +0000 (19:11 -0400)
this change eliminates the internal __memalign function and makes the
memalign and posix_memalign functions completely independent of the
malloc implementation, written portably in terms of aligned_alloc.

src/malloc/malloc_impl.h
src/malloc/memalign.c
src/malloc/memalign_altname.c
src/malloc/posix_memalign.c

index 2c61b3ffe892886db79f275b3389e0720c47bac1..6a92c1c6b2d24d91ab17c13e69203ae026a77637 100644 (file)
@@ -6,8 +6,6 @@
 
 hidden void *__expand_heap(size_t *);
 
-hidden void *__memalign(size_t, size_t);
-
 struct chunk {
        size_t psize, csize;
        struct chunk *next, *prev;
index cf9dfbda66ca295c543a16ff1202ef0a118f785b..e06c76ed04126848b40a3bdeadbf3303585efd48 100644 (file)
@@ -3,7 +3,7 @@
 #include <errno.h>
 #include "malloc_impl.h"
 
-void *__memalign(size_t align, size_t len)
+void *aligned_alloc(size_t align, size_t len)
 {
        unsigned char *mem, *new;
 
@@ -50,5 +50,3 @@ void *__memalign(size_t align, size_t len)
        __bin_chunk(c);
        return new;
 }
-
-weak_alias(__memalign, memalign);
index b6143f303f673a4e1fcf5f6a91665e4952455abc..32cd87d812f7f4228d1f85932f7a7dbb75777de7 100644 (file)
@@ -1,7 +1,7 @@
+#define _BSD_SOURCE
 #include <stdlib.h>
-#include "malloc_impl.h"
 
-void *aligned_alloc(size_t align, size_t len)
+void *memalign(size_t align, size_t len)
 {
-       return __memalign(align, len);
+       return aligned_alloc(align, len);
 }
index 2ea8bd8a434a22f555e2ed9482299f0029870c73..ad4d8f473015e378ad1025363cd68507ec539f18 100644 (file)
@@ -1,11 +1,10 @@
 #include <stdlib.h>
 #include <errno.h>
-#include "malloc_impl.h"
 
 int posix_memalign(void **res, size_t align, size_t len)
 {
        if (align < sizeof(void *)) return EINVAL;
-       void *mem = __memalign(align, len);
+       void *mem = aligned_alloc(align, len);
        if (!mem) return errno;
        *res = mem;
        return 0;