Luna/kernel/src/memory/Heap.h

22 lines
455 B
C++

#pragma once
#include <PlacementNew.h>
#include <Result.h>
Result<void*> kmalloc(usize size);
Result<void*> kcalloc(usize nmemb, usize size);
Result<void*> krealloc(void* ptr, usize size);
Result<void> kfree(void* ptr);
template <typename T> Result<T*> make()
{
void* ptr = TRY(kcalloc(1, sizeof(T)));
return new (ptr) T;
}
template <typename T> Result<void> destroy(T* item)
{
item->~T();
return kfree(item);
}
void dump_heap_usage();