From a61c4bc9d3cec489e07b5bb249ba400f0bda9493 Mon Sep 17 00:00:00 2001 From: Suraj Singh Date: Mon, 30 Mar 2020 17:31:27 +0530 Subject: [PATCH] added overlapping address spaces --- pset3/kernel.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pset3/kernel.cc b/pset3/kernel.cc index 4515126..71ac804 100644 --- a/pset3/kernel.cc +++ b/pset3/kernel.cc @@ -211,7 +211,7 @@ void process_setup(pid_t pid, const char* program_name) { ptable[pid].regs.reg_rip = loader.entry(); // allocate stack - uintptr_t stack_addr = PROC_START_ADDR + PROC_SIZE * pid - PAGESIZE; + uintptr_t stack_addr = MEMSIZE_VIRTUAL -PAGESIZE;//PROC_START_ADDR + PROC_SIZE * pid - PAGESIZE; ptable[pid].regs.reg_rsp = stack_addr + PAGESIZE; void *new_page = (void*)kalloc(PAGESIZE); vmiter(ptable[pid].pagetable, stack_addr).map(new_page, PTE_PWU); @@ -358,6 +358,8 @@ uintptr_t syscall(regstate* regs) { int syscall_page_alloc(uintptr_t addr) { void* new_page = (void*)kalloc(PAGESIZE); + if(new_page == nullptr) + return -1; vmiter(current->pagetable, addr).map(new_page, PTE_PWU); memset((void*) new_page, 0, PAGESIZE); return 0;