【问题标题】:How to get physical address from struct page in linux kernel如何从linux内核中的struct page获取物理地址
【发布时间】:2016-01-17 09:14:38
【问题描述】:

假设我从分配器中获得了一个指向struct page 的指针,我该如何获得对应的物理地址?内核是否提供函数来实现它?
谢谢。

【问题讨论】:

    标签: memory-management linux-kernel


    【解决方案1】:

    答案是 page_to_phys(),但请确保这确实是您所需要的。例如,如果您想要物理地址以便将其交给某些设备进行 DMA,那么您很可能需要页面的总线地址,它可能是也可能不是物理地址。

    http://lxr.free-electrons.com/source/include/asm-generic/page.h#L90

    【讨论】:

    • 这个功能是否适合ZONE_NORMAL是我需要的。谢谢。
    • 你好,@gby 我查看了page_to_phys() 的实现是#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)。它看起来与DMA有关。如果我希望将页面的 paddr 分配给进程的 vma,page_to_phys() 是否适合我的情况?
    猜你喜欢
    • 2017-04-26
    • 2011-09-09
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多