From 01adb24aa10015c942b7ecdc5cdbaee7d5fe9615 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sun, 7 Aug 2016 11:35:55 +0200 Subject: [PATCH] Fix sbrk --- kernel/src/scheduler.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/src/scheduler.cpp b/kernel/src/scheduler.cpp index 1e2520aa..487b49f7 100644 --- a/kernel/src/scheduler.cpp +++ b/kernel/src/scheduler.cpp @@ -662,13 +662,14 @@ int64_t scheduler::exec(const std::string& file, const std::vector& return process.pid; } -//TODO This will not work several times (brk_start/brk_end) void scheduler::sbrk(size_t inc){ auto& process = pcb[current_pid].process; size_t size = (inc + paging::PAGE_SIZE - 1) & ~(paging::PAGE_SIZE - 1); size_t pages = size / paging::PAGE_SIZE; + logging::logf(logging::log_level::DEBUG, "sbrk: Add %u pages to process %u heap\n", pages, process.pid); + //Get some physical memory auto physical = physical_allocator::allocate(pages); @@ -676,7 +677,7 @@ void scheduler::sbrk(size_t inc){ return; } - auto virtual_start = process.brk_start; + auto virtual_start = process.brk_end; logging::logf(logging::log_level::DEBUG, "Map(p%u) virtual:%h into phys: %h\n", process.pid, virtual_start, physical);