void *malloc(size_t len)
{
+ assert(len <= Arch::page_size - sizeof(size_t));
+
len = (len + sizeof(size_t) + Arch::page_size - 1) / Arch::page_size;
Mem::Page *page = Mem::PageAlloc::alloc(len);
void free(void *addr)
{
if (addr) {
- size_t *ptr = (size_t *)addr;
- ptr--;
+ size_t *ptr = (size_t *)addr - 1;
size_t len = *ptr;
Mem::Page *page = Mem::kvirt_to_page(addr);
Mem::PageAlloc::free(page, len);