Luna/kernel/src/memory/UserVM.h
apio 139c0b5eb1
Kernel: Make a UserVM wrapper around Bitmap and use that to allocate user VM
This lets us allocate more than one page of memory from the user side.
2023-01-13 19:05:20 +01:00

24 lines
495 B
C++

#pragma once
#include <luna/Bitmap.h>
#include <luna/OwnedPtr.h>
#include <luna/Result.h>
class UserVM
{
public:
UserVM(void* base, usize size);
~UserVM();
Result<u64> alloc_one_page();
Result<u64> alloc_several_pages(usize count);
Result<void> free_one_page(u64 address);
Result<void> free_several_pages(u64 address, usize count);
static Result<OwnedPtr<UserVM>> try_create();
private:
Result<bool> try_expand(usize size = 160);
Bitmap m_bitmap;
};