15#define HEAP_MAGIC 0x8051
17#define HEAP_MIN_POOLSIZE (64 - sizeof(Header))
18#define HEAP_MAX_POOLSIZE (128*1024 - sizeof(Header))
19#define HEAP_POOLS (12)
22#define HEAP_INCREMENT (PGSIZE / 64)
32#define ROUNDUP(_x, _n) (((_x) + (_n) - 1) & ~((_n) - 1))
35 { 0, 0, (
Header *)0, 0x400000000, 0x400000000 },
36 { 0, 0, (
Header *)0, 0x410000000, 0x410000000 },
37 { 0, 0, (
Header *)0, 0x420000000, 0x420000000 },
38 { 0, 0, (
Header *)0, 0x430000000, 0x430000000 },
39 { 0, 0, (
Header *)0, 0x440000000, 0x440000000 },
40 { 0, 0, (
Header *)0, 0x450000000, 0x450000000 },
41 { 0, 0, (
Header *)0, 0x460000000, 0x460000000 },
42 { 0, 0, (
Header *)0, 0x470000000, 0x470000000 },
43 { 0, 0, (
Header *)0, 0x480000000, 0x480000000 },
44 { 0, 0, (
Header *)0, 0x490000000, 0x490000000 },
45 { 0, 0, (
Header *)0, 0x4A0000000, 0x4A0000000 },
46 { 0, 0, (
Header *)0, 0x4B0000000, 0x4B0000000 },
58 if ((bucketSz -
sizeof(
Header)) >= sz) {
70 size_t bucketSz = (1 << idx) * 64;
111 return (
void *)(hdr + 1);
144 return (
void *)(
addr + 1);
static int size_to_idx(size_t sz)
static void * malloc_large(size_t sz)
static HeapPool largePool
#define HEAP_MAX_POOLSIZE
static HeapPool pool[HEAP_POOLS]
static void grow_small(int idx)
static void * malloc_small(size_t sz)
static void free_small(Header *mem)
void * calloc(size_t num, size_t sz)
static void free_large(Header *mem)
int munmap(void *addr, size_t len)
void * mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)