当前位置: 技术问答>linux和unix
如何获得虚拟地址对应的物理地址?
来源: 互联网 发布时间:2015-05-10
本文导语: 操作系统: redhat 9.0 目的:通过虚拟地址获取物理地址。 输入参数p(进程号)、vaddr(虚拟地址)、vm(vm_area_struct) 方法:通过pgd_offset() pmd_offset() pte_offset_kernel() 获得了一个指向pte_t的指针 pte 下面有采用两种方法可以获得...
操作系统:
redhat 9.0
目的:通过虚拟地址获取物理地址。
输入参数p(进程号)、vaddr(虚拟地址)、vm(vm_area_struct)
方法:通过pgd_offset() pmd_offset() pte_offset_kernel() 获得了一个指向pte_t的指针 pte
下面有采用两种方法可以获得该物理地址:
(1) physical_address=__pa(page_address( pte_page(*pte)) + (addr & ~PAGE_MASK));
(2) (PAGE_OFFSET+((pte_page(*pte)-mem_map)
redhat 9.0
目的:通过虚拟地址获取物理地址。
输入参数p(进程号)、vaddr(虚拟地址)、vm(vm_area_struct)
方法:通过pgd_offset() pmd_offset() pte_offset_kernel() 获得了一个指向pte_t的指针 pte
下面有采用两种方法可以获得该物理地址:
(1) physical_address=__pa(page_address( pte_page(*pte)) + (addr & ~PAGE_MASK));
(2) (PAGE_OFFSET+((pte_page(*pte)-mem_map)