#include "pthread_impl.h"
#include "libc.h"
#include "dynlink.h"
+#include "malloc_impl.h"
static void error(const char *, ...);
static void reclaim(struct dso *dso, size_t start, size_t end)
{
- void __malloc_donate(char *, char *);
if (start >= dso->relro_start && start < dso->relro_end) start = dso->relro_end;
if (end >= dso->relro_start && end < dso->relro_end) end = dso->relro_start;
if (start >= end) return;
void *__mremap(void *, size_t, size_t, int, ...);
int __madvise(void *, size_t, int);
+void *__expand_heap(size_t *);
+
+void __malloc_donate(char *, char *);
+
struct chunk {
size_t psize, csize;
struct chunk *next, *prev;
#include <sys/mman.h>
#include "libc.h"
#include "syscall.h"
+#include "malloc_impl.h"
/* This function returns true if the interval [old,new]
* intersects the 'len'-sized interval below &libc.auxv
return 0;
}
-void *__mmap(void *, size_t, int, int, int, off_t);
-
/* Expand the heap in-place if brk can be used, or otherwise via mmap,
* using an exponential lower bound on growth by mmap to make
* fragmentation asymptotically irrelevant. The size argument is both
#include <limits.h>
#include <errno.h>
#include "libc.h"
+#include "malloc_impl.h"
#define ALIGN 16
-void *__expand_heap(size_t *);
-
static void *__simple_malloc(size_t n)
{
static char *cur, *end;
}
#endif
-void *__expand_heap(size_t *);
-
static struct chunk *expand_heap(size_t n)
{
static int heap_lock[2];