我如何知道某个页面已从结构页面固定?

问题描述 投票:0回答:1

我想知道某个页面是否固定在物理内存中,即不可交换或不可迁移。

从这篇post中,我知道 get_user_pages() 通常用于固定驱动程序中的用户空间内存以执行 DMA。它增加了struct page的refcnt,这意味着有人正在对物理页进行操作,并且该页不应该被操作。

是否还有其他情况,例如“kmalloc”或“vmmaloc”分配的内存用于 DMA,应固定。

linux memory memory-management kernel dma
1个回答
0
投票

Linux 提供了

pagemap
,一组用于检查用户空间中页表的接口。请参阅文档(请仔细阅读文档)。

测试页面是否支持 DMA(固定)的方法是:

  1. 通过
    getpid()
    获取当前进程的pid。
  2. /proc/<pid>/pagemap获取虚拟地址的
    pfn(页框号)
  3. /proc/kpageflags
    查询该页框的标志。固定页面带有
    UNEVICTABLE
    标志。
© www.soinside.com 2019 - 2024. All rights reserved.