2023-01-13 18:05:20 +00:00
|
|
|
#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);
|
|
|
|
|
2023-03-14 19:43:15 +00:00
|
|
|
Result<bool> free_one_page(u64 address);
|
|
|
|
Result<bool> free_several_pages(u64 address, usize count);
|
2023-01-13 18:05:20 +00:00
|
|
|
|
|
|
|
static Result<OwnedPtr<UserVM>> try_create();
|
|
|
|
|
2023-03-18 22:45:48 +00:00
|
|
|
Result<OwnedPtr<UserVM>> clone();
|
|
|
|
|
2023-01-13 18:05:20 +00:00
|
|
|
private:
|
|
|
|
Result<bool> try_expand(usize size = 160);
|
|
|
|
Bitmap m_bitmap;
|
|
|
|
};
|