forked from pepper-org/pepperOS
Upgrade VMM for processes
This commit is contained in:
+1
-2
@@ -27,8 +27,7 @@
|
||||
/* process */
|
||||
#define PROCESS_NAME_MAX 64
|
||||
#define PROCESS_STACK_SIZE 0x10000 // 64kb
|
||||
#define PROCESS_BASE 0x400000
|
||||
#define PROCESS_STACK_BASE 0x1000000
|
||||
#define PROCESS_STACK_TOP 0x80000000
|
||||
|
||||
/* sched */
|
||||
// 1 tick = 1 ms => quantum = 10ms
|
||||
|
||||
@@ -16,9 +16,11 @@
|
||||
|
||||
void paging_init(struct boot_context boot_ctx);
|
||||
void paging_map_page(uint64_t* root_table, uint64_t virt, uint64_t phys, uint64_t flags);
|
||||
uint64_t* alloc_page_table();
|
||||
|
||||
// To swap root page tables
|
||||
void load_cr3(uint64_t value);
|
||||
void invlpg(void *addr);
|
||||
|
||||
extern uint64_t hhdm_off;
|
||||
|
||||
|
||||
+12
-17
@@ -9,26 +9,21 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/*
|
||||
This will be our linked list of virtual memory objects.
|
||||
Flags here aren't x86 flags, they are platform-agnostic
|
||||
kernel-defined flags.
|
||||
*/
|
||||
|
||||
struct vm_object {
|
||||
uintptr_t base;
|
||||
size_t length;
|
||||
size_t flags;
|
||||
struct vm_object* next;
|
||||
struct vmm_context {
|
||||
uint64_t* pml4;
|
||||
};
|
||||
|
||||
// Flags bitfield
|
||||
#define VM_FLAG_NONE 0
|
||||
#define VM_FLAG_WRITE (1 << 0)
|
||||
#define VM_FLAG_EXEC (1 << 1)
|
||||
#define VM_FLAG_USER (1 << 2)
|
||||
|
||||
void vmm_init(void);
|
||||
void* vmm_alloc_region(uint64_t* pml4, size_t pages, uint64_t flags);
|
||||
bool vmm_is_mapped(uint64_t* pml4, uint64_t virt);
|
||||
void vmm_unmap(uint64_t* pml4, uint64_t virt);
|
||||
void* vmm_map(uint64_t* pml4, uint64_t virt, uint64_t flags);
|
||||
uint64_t* vmm_create_address_space();
|
||||
uint64_t vmm_virt_to_phys(uint64_t* pml4, uint64_t virt);
|
||||
|
||||
#define VMM_USER_SPACE_START 0x0000000000001000
|
||||
#define VMM_USER_SPACE_END 0x00007FFFFFFFF000
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user