Skip to content

Buddy allocator

include/mem/buddy.h View source View on GitHub
struct buddy_free_area (3 fields) source
§ struct buddy_page *head

head->prev == NULL

§ struct buddy_page *tail

tail->next == NULL

§ uint64_t nr_free
void buddy_add_to_free_area(
    struct buddy_page *page,
    struct buddy_free_area *area
)
source
struct buddy_page * buddy_remove_from_free_area(struct buddy_free_area *area)
source
paddr_t buddy_alloc_pages_global(size_t count, enum alloc_flags flags)
source
void buddy_free_pages_global(paddr_t addr, uint64_t count)
source
void buddy_add_entry(
    struct page *page_array,
    struct limine_memmap_entry *entry,
    struct buddy_free_area *farea
)
source
void buddy_reserve_range(uint64_t pfn, uint64_t pages)
source
paddr_t buddy_alloc_pages(
    struct buddy_free_area *free_area,
    size_t count
)
source
void buddy_free_pages(
    paddr_t addr,
    size_t count,
    struct buddy_free_area *free_area,
    size_t total_pages
)
source
void buddy_init(void)
source
#define BUDDY_MAX_ORDER 18
source