Linux 下获取某虚拟地址对应的页表信息
来源:互联网 发布:富兰克林罗斯福知乎 编辑:程序博客网 时间:2024/06/06 23:18
即给出某个虚拟地址,通过查询页表信息,将其转换成物理地址。
//该函数用于查询address对应的页表。摘自arch/x86/mm/fault.c
static void dump_pagetable(unsigned long address)
{
pgd_t *base = __va(read_cr3() & PHYSICAL_PAGE_MASK); //页目录表基址
pgd_t *pgd = base + pgd_index(address);
pud_t *pud; // 页表级数大于 3
pmd_t *pmd; // 页表级数大于 2
pte_t *pte;
if (bad_address(pgd))
goto bad;
printk("PGD %lx ", pgd_val(*pgd));
if (!pgd_present(*pgd))
goto out;
pud = pud_offset(pgd, address);
if (bad_address(pud))
goto bad;
printk("PUD %lx ", pud_val(*pud));
if (!pud_present(*pud) || pud_large(*pud))
goto out;
pmd = pmd_offset(pud, address);
if (bad_address(pmd))
goto bad;
printk("PMD %lx ", pmd_val(*pmd));
if (!pmd_present(*pmd) || pmd_large(*pmd))
goto out;
pte = pte_offset_kernel(pmd, address);
if (bad_address(pte))
goto bad;
printk("PTE %lx", pte_val(*pte));
out:
printk("/n");
return;
bad:
printk("BAD/n");
}
之后转换成物理地址: pa = (pte_val(*pte) & PAGE_MASK | (address & ~PAGE_MASK);
- Linux 下获取某虚拟地址对应的页表信息
- Linux下获取虚拟地址对应的物理地址的方法
- Linux下获取虚拟地址对应的物理地址的方法
- Linux下如何在进程中获取虚拟地址对应的物理地址
- Linux下如何在进程中获取虚拟地址对应的物理地址
- 通过地址获取对应的源代码信息
- win7 xp vista 下获取进程对应的ip地址和端口信息
- 通过地址获取对应的源代码信息收藏
- (转)通过地址获取对应的源代码信息
- 使用GeoIP获取IP地址对应的信息(安装)
- Linux下虚拟地址映射
- linux 根据进程ID获取对应进程的信息
- SpringSecurity从数据库中获取url资源地址和对应的权限信息
- Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
- Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
- linux下获取ip地址的命令行
- linux下ipv6地址的获取
- 获取Linux下的IP地址
- Cygwin安装openSSH
- DICOM协议中有关打印的内容
- 即时通讯协议简述
- linux上面的sz,rz命令与ssh的配合
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- Linux 下获取某虚拟地址对应的页表信息
- Linux(Fedora和Ubuntu等)下android真机调试
- 2010年的最后一周
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- DVT和ADVT - 为数不多的DICOM测试工具说明AND下载
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- Dcmtk 在 PACS 开发中的应用
- 床边数字x线机--概念机
- 使用网上邻居传文件