#pragma once #include struct UserHeap { bool init(); uint64_t request_virtual_page(); uint64_t request_virtual_pages(uint64_t count); void free_virtual_page(uint64_t address); void free_virtual_pages(uint64_t address, uint64_t count); void free(); bool inherit(UserHeap& other); private: uint8_t* bitmap = nullptr; uint64_t bitmap_size = 0; uint64_t start_index = 0; bool bitmap_read(uint64_t index); void bitmap_set(uint64_t index, bool value); bool try_expand(); bool try_expand_size(uint64_t size); };