【发布时间】:2016-01-17 09:14:38
【问题描述】:
假设我从分配器中获得了一个指向struct page 的指针,我该如何获得对应的物理地址?内核是否提供函数来实现它?
谢谢。
【问题讨论】:
标签: memory-management linux-kernel
假设我从分配器中获得了一个指向struct page 的指针,我该如何获得对应的物理地址?内核是否提供函数来实现它?
谢谢。
【问题讨论】:
标签: memory-management linux-kernel
答案是 page_to_phys(),但请确保这确实是您所需要的。例如,如果您想要物理地址以便将其交给某些设备进行 DMA,那么您很可能需要页面的总线地址,它可能是也可能不是物理地址。
http://lxr.free-electrons.com/source/include/asm-generic/page.h#L90
【讨论】:
ZONE_NORMAL是我需要的。谢谢。
page_to_phys() 的实现是#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)。它看起来与DMA有关。如果我希望将页面的 paddr 分配给进程的 vma,page_to_phys() 是否适合我的情况?