refactor
This commit is contained in:
+8
-3
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <common/utils.h>
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/arch.h>
|
||||
#include <kernel/virt.h>
|
||||
#include <stdatomic.h>
|
||||
#include <stddef.h>
|
||||
@@ -12,17 +13,21 @@ struct page* vm_pfndb = nullptr;
|
||||
|
||||
static size_t mapping_offset = 0;
|
||||
|
||||
void* vm_alloc(size_t length) {
|
||||
uintptr_t vm_alloc(size_t length) {
|
||||
uintptr_t base = arch_mem_mapping_addr();
|
||||
size_t offset = atomic_fetch_add(&mapping_offset, ALIGN_UP(length, arch_mem_page_size()));
|
||||
|
||||
return (void*)(base + offset);
|
||||
return (base + offset);
|
||||
}
|
||||
|
||||
void vm_free(void* ptr, size_t length) {
|
||||
void vm_free(uintptr_t ptr, size_t length) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
uintptr_t vm_page_addr(struct page* page) {
|
||||
return (((uintptr_t)page - (uintptr_t)vm_pfndb) / sizeof(struct page)) * arch_mem_page_size();
|
||||
}
|
||||
|
||||
size_t mem_high_shift() {
|
||||
return arch_mem_level_bits() * arch_mem_num_levels() + arch_mem_page_bits();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user