[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH v2 7/7] kernel2: Page Directories seltener kopieren
! kernel2: Page Directories muessen nur neu kopiert werden, wenn sie
sich auch tatsaechlich geaendert haben. Wenn sich nur eine Page Table
geaendert hat, ist das nicht noetig.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/kernel2/src/arch/i386/mm/mm_context.c | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/kernel2/src/arch/i386/mm/mm_context.c b/src/kernel2/src/arch/i386/mm/mm_context.c
index e4eb79b..20edcfa 100644
--- a/src/kernel2/src/arch/i386/mm/mm_context.c
+++ b/src/kernel2/src/arch/i386/mm/mm_context.c
@@ -289,6 +289,13 @@ static bool map_page
// An dieser Stelle kann die Page Table noch nicht initialisiert
// werden, weil sie noch nicht gemappt ist.
clear_page_table = TRUE;
+
+ if (((uintptr_t) vaddr >= KERNEL_MEM_START) && ((uintptr_t) vaddr <
+ KERNEL_MEM_END))
+ {
+ context->version = ++page_directory_version;
+ page_directory_current = context->page_directory_virt;
+ }
}
else if (page_directory[vpage / PAGE_TABLE_LENGTH] & PTE_PS)
{
@@ -343,13 +350,6 @@ static bool map_page
} else {
mmc_unmap(&mmc_current_context(), page_table, 1);
}
-
- if (((uintptr_t) vaddr >= KERNEL_MEM_START) && ((uintptr_t) vaddr <
- KERNEL_MEM_END))
- {
- context->version = ++page_directory_version;
- page_directory_current = context->page_directory_virt;
- }
unlock(&context->lock);
return TRUE;
}
--
1.6.0.2