Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Tectu

Seiten: [1]
1
tyndur / typedefs für paddr_t und vaddr_t
« am: 14. November 2013, 00:06 »
Aus der source vom tyndur kernel:
typedef uint64_t uintptr_t;

typedef uintptr_t paddr_t;
typedef void*      vaddr_t;
Wie kommts dass vaddr_t ein Pointer ist und paddr_t nicht? Was steckt dahinter?


~ Tectu
2
tyndur / Re: Frage zu VMM
« am: 13. November 2013, 15:23 »
Okay, das verstehe ich jetzt. Danke!


~ Tectu
3
tyndur / Re: Frage zu VMM
« am: 13. November 2013, 12:55 »
Die Variable context.page_directory_virt wird auf die Adresse der Page gesetzt. Das memset überschreibt aber nicht wieder die Variable, sondern die Page selbst.
Woops... Ich schiebe diese Misinterpretation jetzt einfach mal auf den Schlafmangel ;-)

Damit man darin lesen und schreiben kann. Nur auf gemappte physische Seiten kann zugegriffen werden. Gemappt heißt, dass es eine virtuelle Adresse gibt, und diese dem Kernel bekannt sein sollte.
Sofern mein Kernel wie im Tutorial vorgeschlagen 1:1 gemappt ist, benötige ich diese zusätzliche Adressinformation also nicht, richtig?


~ Tectu
4
tyndur / Frage zu VMM
« am: 12. November 2013, 22:48 »
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
Seiten: [1]

Einloggen