You need to sign in or sign up before continuing.
提交 d1e6fdd3 编写于 作者: R Rich Felker

reverse dependency order of memalign and aligned_alloc

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.
上级 de798308
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
hidden void *__expand_heap(size_t *); hidden void *__expand_heap(size_t *);
hidden void *__memalign(size_t, size_t);
struct chunk { struct chunk {
size_t psize, csize; size_t psize, csize;
struct chunk *next, *prev; struct chunk *next, *prev;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include <errno.h> #include <errno.h>
#include "malloc_impl.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; unsigned char *mem, *new;
...@@ -50,5 +50,3 @@ void *__memalign(size_t align, size_t len) ...@@ -50,5 +50,3 @@ void *__memalign(size_t align, size_t len)
__bin_chunk(c); __bin_chunk(c);
return new; return new;
} }
weak_alias(__memalign, memalign);
#define _BSD_SOURCE
#include <stdlib.h> #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);
} }
#include <stdlib.h> #include <stdlib.h>
#include <errno.h> #include <errno.h>
#include "malloc_impl.h"
int posix_memalign(void **res, size_t align, size_t len) int posix_memalign(void **res, size_t align, size_t len)
{ {
if (align < sizeof(void *)) return EINVAL; if (align < sizeof(void *)) return EINVAL;
void *mem = __memalign(align, len); void *mem = aligned_alloc(align, len);
if (!mem) return errno; if (!mem) return errno;
*res = mem; *res = mem;
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册