#include <sys/types.h>
#include <stdio.h>
#include "genalloc.h"
#include "pdlmalloc.h"
#include <sys/param.h>
#include <mnemosyne.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <pcm.h>
Go to the source code of this file.
Classes | |
| struct | malloc_chunk |
| struct | malloc_bin |
Defines | |
| #define | SBRK_UNIT 8192 |
| #define | MAX_PREALLOCS 5 |
| #define | __STD_C 0 |
| #define | _BEGIN_EXTERNS_ |
| #define | _END_EXTERNS_ |
| #define | _ARG_(x) () |
| #define | Void_t char |
| #define | NIL(type) ((type)0) |
| #define | DLMALLOC_PHEAP_BASE 0xc00000000 |
| #define | DLMALLOC_PHEAP_SIZE (1024*1024*1024) |
| #define | malloc_getpagesize SBRK_UNIT |
| #define | SIZE_SZ (sizeof(size_t)) |
| #define | MALLOC_MIN_OVERHEAD (SIZE_SZ + SIZE_SZ) |
| #define | MALLOC_ALIGN_MASK (MALLOC_MIN_OVERHEAD - 1) |
| #define | MINSIZE (sizeof(struct malloc_chunk) + SIZE_SZ) |
| #define | request2size(req) |
| #define | aligned_OK(m) (((size_t)((m)) & (MALLOC_ALIGN_MASK)) == 0) |
| #define | exact_fit(ptr, req) ((unsigned)((ptr)->size - (req)) < MINSIZE) |
| #define | INUSE 0x1 |
| #define | inuse(p) ((p)->size & INUSE) |
| #define | set_inuse(p) ((p)->size |= INUSE) |
| #define | clear_inuse(p) ((p)->size &= ~INUSE) |
| #define | next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->size & ~INUSE) )) |
| #define | prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ( *((size_t*)((char*)(p) - SIZE_SZ)) & ~INUSE))) |
| #define | set_size(P, Sz) |
| #define | chunk2mem(p) ((Void_t*)((char*)(p) + SIZE_SZ)) |
| #define | mem2chunk(mem) ((mchunkptr)((char*)(mem) - SIZE_SZ)) |
| #define | clean_head(b) (&((b)->chd)) |
| #define | first_clean(b) ((b)->chd.fd) |
| #define | last_clean(b) ((b)->chd.bk) |
| #define | dirty_head(b) (&((b)->dhd)) |
| #define | first_dirty(b) ((b)->dhd.fd) |
| #define | last_dirty(b) ((b)->dhd.bk) |
| #define | NBINS 128 |
| #define | LASTBIN (&(av[NBINS-1])) |
| #define | FIRSTBIN (&(av[2])) |
| #define | MAX_SMALLBIN_OFFSET 18 |
| #define | MAX_SMALLBIN_SIZE 144 |
| #define | IAV(i) {{ 0, &(av[i].dhd), &(av[i].dhd) }, { 0, &(av[i].chd), &(av[i].chd) }} |
| #define | findbin(Sizefb, Bfb) |
| #define | reset_maxClean |
| #define | unlink(Qul) |
| #define | dirtylink(Qdl) |
| #define | cleanlink(Qcl) |
| #define | consolidate(Qc) |
| #define | clear_last_remainder |
| #define | return_chunk(Prc) |
Typedefs | |
| typedef malloc_chunk * | mchunkptr |
| typedef malloc_bin * | mbinptr |
Functions | |
| __attribute__ ((section("PERSISTENT"))) | |
| TM_CALLABLE Void_t * | PDL_MALLOC (size_t bytes) |
| TM_CALLABLE void | PDL_FREE (Void_t *mem) |
| TM_CALLABLE Void_t * | PDL_REALLOC (Void_t *mem, size_t bytes) |
| TM_CALLABLE Void_t * | PDL_MEMALIGN (size_t alignment, size_t bytes) |
| size_t | PDL_OBJSIZE (void *mem) |
| TM_CALLABLE Void_t * | PDL_VALLOC (size_t bytes) |
| TM_CALLABLE Void_t * | PDL_CALLOC (size_t n, size_t elem_size) |
| TM_CALLABLE void | PDL_CFREE (Void_t *mem) |
| TM_CALLABLE size_t | PDL_GET_USABLE_SIZE (Void_t *mem) |
| TM_CALLABLE void | PDL_MALLOC_STATS () |
Definition in file pdlmalloc.c.
| #define cleanlink | ( | Qcl | ) |
| #define clear_last_remainder |
Value:
{ \
if (last_remainder != 0) \
{ \
cleanlink(last_remainder); \
last_remainder = 0; \
} \
} \
| #define consolidate | ( | Qc | ) |
Value:
{ \
for (;;) \
{ \
mchunkptr Pc = prev_chunk(Qc); \
if (!inuse(Pc)) \
{ \
unlink(Pc); \
set_size(Pc, Pc->size + (Qc)->size); \
(Qc) = Pc; \
} \
else break; \
} \
for (;;) \
{ \
mchunkptr Nc = next_chunk(Qc); \
if (!inuse(Nc)) \
{ \
unlink(Nc); \
set_size((Qc), (Qc)->size + Nc->size); \
} \
else break; \
} \
} \
| #define dirtylink | ( | Qdl | ) |
| #define findbin | ( | Sizefb, | |||
| Bfb | ) |
Value:
{ \
size_t Sfb = (Sizefb); \
if (Sfb < MAX_SMALLBIN_SIZE) \
(Bfb) = (av + (Sfb >> 3)); \
else \
{ \
/* Offset wrt small bins */ \
size_t Ifb = MAX_SMALLBIN_OFFSET; \
Sfb >>= 3; \
/* find power of 2 */ \
while (Sfb >= (MINSIZE * 2)) { Ifb += 4; Sfb >>= 1; } \
/* adjust for quadrant */ \
Ifb += (Sfb - MINSIZE) >> 2; \
(Bfb) = av + Ifb; \
} \
} \
| #define request2size | ( | req | ) |
Value:
(((long)(req) <= 0) ? MINSIZE : \ (((req) + MALLOC_MIN_OVERHEAD + MALLOC_ALIGN_MASK) \ & ~(MALLOC_ALIGN_MASK)))
Definition at line 372 of file pdlmalloc.c.
Referenced by PDL_MALLOC(), PDL_MEMALIGN(), and PDL_REALLOC().
| #define reset_maxClean |
Value:
{ \
while (maxClean > FIRSTBIN && clean_head(maxClean)==last_clean(maxClean)) \
--maxClean; \
} \
| #define return_chunk | ( | Prc | ) |
Value:
{ \
(Prc)->fd = returned_list; \
returned_list = (Prc); \
} \
| #define set_size | ( | P, | |||
| Sz | ) |
Value:
{ \
size_t Sss = (Sz); \
(P)->size = *((size_t*)((char*)(P) + Sss - SIZE_SZ)) = Sss; \
} \
Definition at line 412 of file pdlmalloc.c.
Referenced by PDL_MALLOC(), PDL_MEMALIGN(), and PDL_REALLOC().
| #define unlink | ( | Qul | ) |
1.4.7