From d0b37eef9b10d30be27f2031fabdd2c079e5da79 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sat, 8 Feb 2014 16:00:26 +0100 Subject: [PATCH] Simplify the process structure --- kernel/include/process.hpp | 1 - kernel/src/paging.cpp | 6 +++--- kernel/src/scheduler.cpp | 6 ------ 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/kernel/include/process.hpp b/kernel/include/process.hpp index 1cbfe671..06bc5d76 100644 --- a/kernel/include/process.hpp +++ b/kernel/include/process.hpp @@ -64,7 +64,6 @@ struct process_t { volatile interrupt::syscall_regs* context; std::vector segments; - std::vector physical_paging; }; constexpr const size_t program_base = 0x8000000000; diff --git a/kernel/src/paging.cpp b/kernel/src/paging.cpp index 4717e4ab..4b70c3d4 100644 --- a/kernel/src/paging.cpp +++ b/kernel/src/paging.cpp @@ -429,7 +429,7 @@ bool paging::user_map(scheduler::process_t& process, size_t virt, size_t physica clear_physical_page(physical_pdpt); process.paging_size += paging::PAGE_SIZE; - process.physical_paging.push_back(physical_pdpt); + process.segments.push_back({physical_pdpt, 1}); } auto physical_pdpt = reinterpret_cast(pml4t[pml4e]) & ~0xFFF; @@ -448,7 +448,7 @@ bool paging::user_map(scheduler::process_t& process, size_t virt, size_t physica clear_physical_page(physical_pd); process.paging_size += paging::PAGE_SIZE; - process.physical_paging.push_back(physical_pd); + process.segments.push_back({physical_pdpt, 1}); } auto physical_pd = reinterpret_cast(pdpt[pdpte]) & ~0xFFF; @@ -467,7 +467,7 @@ bool paging::user_map(scheduler::process_t& process, size_t virt, size_t physica clear_physical_page(physical_pt); process.paging_size += paging::PAGE_SIZE; - process.physical_paging.push_back(physical_pt); + process.segments.push_back({physical_pdpt, 1}); } auto physical_pt = reinterpret_cast(pd[pde]) & ~0xFFF; diff --git a/kernel/src/scheduler.cpp b/kernel/src/scheduler.cpp index 61b8d21b..74291b4e 100644 --- a/kernel/src/scheduler.cpp +++ b/kernel/src/scheduler.cpp @@ -92,12 +92,6 @@ void gc_task(){ //1. Release physical memory of PML4T physical_allocator::free(desc.physical_cr3, 1); - //2. Release physical memory of paging structures - for(auto page : desc.physical_paging){ - physical_allocator::free(page, 1); - } - desc.physical_paging.clear(); - //3. Release physical stacks physical_allocator::free(desc.physical_kernel_stack, scheduler::kernel_stack_size / paging::PAGE_SIZE); physical_allocator::free(desc.physical_user_stack, scheduler::user_stack_size / paging::PAGE_SIZE);