+ -
当前位置:首页 → 问答吧 → 如何获取一个地址addr相关的pgd、pmd以及pte等信息?

如何获取一个地址addr相关的pgd、pmd以及pte等信息?

时间:2010-09-02

来源:互联网

比如我通过kmalloc返回一个地址addr后,我想知道addr对应的内存管理信息,包括页目录基地址(ttb寄存器)、pgd、pmd以及pte等。
谢谢指导!

作者: seamountain82   发布时间: 2010-09-02

本帖最后由 瀚海书香 于 2010-09-02 17:16 编辑

回复 seamountain82
根据pid获取pcb,根据pcb获取vm,之后就可以了啊。
下面是一个样本代码:
pcb=find_task_by_pid(pid);
pgd=pgd_offset(pcb->mm,va);
pud=pud_offset(pgd,va);
pmd=pmd_offset(pud,va);
pte=pte_offset_kernel(pmd,va)

作者: 瀚海书香   发布时间: 2010-09-02

本帖最后由 seamountain82 于 2010-09-02 17:38 编辑

回复 瀚海书香
新手,不熟悉,谢谢:)
pcb->mm可以用current->mm来代替吗?二者等效吗?

作者: seamountain82   发布时间: 2010-09-02