Nabend,
Ich unternehme zur Zeit den Versuch, paging in meinen Kernel zu implementieren. Hierzu habe ich neben den Wiki-Artikeln auch etwas im tyndur Code rumgeschnüffelt. Hier ist mir folgendes aufgefallen:
file: /src/kernel2/src/arch/i386/mm/mm_context.c
mmc_context_t mmc_create_empty()
{
// Das Page Directory initialisieren
paddr_t phys_page_directory = pmm_alloc(1);
mmc_context_t context;
context.version = 0xFFFFFFFF;
context.lock = LOCK_UNLOCKED;
context.page_directory = phys_page_directory;
context.page_directory_virt = vmm_kernel_automap(
context.page_directory, PAGE_SIZE);
memset(context.page_directory_virt, 0, PAGE_SIZE);
return context;
}
Wieso wird context.page_directory_virt erst auf den Rückgabewert von vmm_kernel_automap() gesetzt, wenn es anschliessend per memset() auf null initialisiert wird?
Ich verstehe zur Zeit sowieso noch nicht ganz, wieso die virtuelle Adresse des page directories von interesse ist?
~ Tectu