#include "buddy.h" #include #include #include #include #include #include void get_random(uint8_t *dst, size_t count) { int fd = open("/dev/urandom", O_RDONLY); assert(count == read(fd, dst, count)); close(fd); } // helper for getting an aligned allocation static void *malloc_aligned(size_t size) { uint8_t *data = malloc(size); if (!((size_t)data % size)) return data; data = realloc(data, size * 2); data = data + (size - ((size_t)data % size)); return data; } void main() { size_t region_size = 1024 * 1024; uint8_t magic[MAGIC_COOKIE_BYTES]; get_random(magic, MAGIC_COOKIE_BYTES); init_buddy(malloc_aligned(region_size), region_size, magic); memset(magic, 0, sizeof(magic)); void *x = allocate(1024); printf("Just allocated %p...\n", x); debug_buddy(); printf("Now liberating %p...\n", x); liberate(x, 1024); debug_buddy(); }