gpt4 book ai didi

linux - 如何在xv6中获取指针的页目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:28 24 4
gpt4 key购买 nike

这是我在 proc.c 中的“translate()”我想在给定指针的虚拟地址的情况下获取物理地址,但我不知道如何获取指针 pgdir(page directory)...

int translate(void* vaddr)
{
cprintf("vaddr = %p\n",vaddr);
int paddr;
pde_t *pgdir;
pte_t *pgtab;
pde_t *pde;
pte_t *pte;

pgdir = (pde_t*)cpu->ts.cr3;
cprintf("page directory base is: %p\n",cpu->ts.cr3);
pde = &pgdir[PDX(vaddr)];
if(*pde & PTE_P){
pgtab = (pte_t*)P2V(PTE_ADDR(*pde));
}else{
cprintf("pde = %d\n",*pde);
cprintf("PTE_P = %d\n",PTE_P);
cprintf("pte not present\n");
return -1;
}
pte = &pgtab[PTX(vaddr)];
paddr = PTE_ADDR(*pte);
cprintf("the virtual address is %p\n",vaddr);
cprintf("the physical address is %d\n",paddr);

return 0;

}

最佳答案

您需要使用argint()argptr() 来读取参数。

关于linux - 如何在xv6中获取指针的页目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com