Go to the documentation of this file.
27 #define PAGE_SIZE (1<<MIN_ORDER)
29 #define PAGE_TO_ADDR(page_idx) (void *)((page_idx*PAGE_SIZE) + g_memory)
32 #define ADDR_TO_PAGE(addr) ((unsigned long)((void *)addr - (void *)g_memory) / PAGE_SIZE)
35 #define BUDDY_ADDR(addr, o) (void *)((((unsigned long)addr - (unsigned long)g_memory) ^ (1<<o)) \
36 + (unsigned long)g_memory)
39 # define PDEBUG(fmt, ...) \
40 fprintf(stderr, "%s(), %s:%d: " fmt, \
41 __func__, __FILE__, __LINE__, ##__VA_ARGS__)
44 # define PDEBUG(fmt, ...)
83 for (i = 0; i < n_pages; i++) {
144 printf(
"%d:%dK ", cnt, (1<<o)/1024);
struct list_head free_area[MAX_ORDER+1]
#define INIT_LIST_HEAD(ptr)
page_t g_pages[(1<< MAX_ORDER)/PAGE_SIZE]
char g_memory[1<< MAX_ORDER]
#define list_for_each(pos, head)
void * buddy_alloc(int size)
static void list_add(struct list_head *new, struct list_head *head)
void buddy_free(void *addr)