Stupidly simple process memory manager with brk()
This commit is contained in:
@@ -45,8 +45,8 @@ uint64_t vmm_get_page(uint64_t P4, uint64_t addr);
|
||||
#define PAGE_EXIST(p) ((p) != (uint64_t)-1)
|
||||
int vmm_set_page(uint64_t P4, uint64_t addr, uint64_t page, uint16_t flags);
|
||||
void vmm_clear_page(uint64_t P4, uint64_t addr, int free);
|
||||
size_t memcpy_k2u(uint64_t P4, void *dst, void *src, size_t n);
|
||||
size_t memcpy_u2k(void *dst, uint64_t P4, void *src, size_t n);
|
||||
size_t memcpy_to_p4(uint64_t P4, void *dst, void *src, size_t n);
|
||||
size_t memcpy_from_p4(void *dst, uint64_t P4, void *src, size_t n);
|
||||
|
||||
extern union PTE BootP4;
|
||||
extern int kernel_start, kernel_end;
|
||||
|
||||
@@ -3,15 +3,18 @@
|
||||
#include <scheduler.h>
|
||||
#include <stdint.h>
|
||||
#include <interrupts.h>
|
||||
#include <stddef.h>
|
||||
|
||||
struct process
|
||||
{
|
||||
uint64_t pid;
|
||||
void *stack_ptr;
|
||||
uint64_t state;
|
||||
|
||||
uint64_t P4;
|
||||
uint64_t brk;
|
||||
uint64_t stack;
|
||||
QUEUE_SPOT(runQ);
|
||||
uint8_t stack[];
|
||||
};
|
||||
|
||||
struct process *process();
|
||||
@@ -21,3 +24,5 @@ void yield();
|
||||
void start_scheduler();
|
||||
|
||||
void switch_stack(void *old_ptr, void *new_ptr);
|
||||
|
||||
uint64_t procmm_brk(struct process *p, void *addr);
|
||||
|
||||
Reference in New Issue
Block a user