gpt4 book ai didi

linux - 5 基本的mmap相关查询

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:30 40 4
gpt4 key购买 nike

您能否帮助我理解下面提到的关于 LINUX 上的 MMAP 的要点:-

a) 为什么 KMALLOC 、 DMA_ALLOC_COHERENT 返回的内存必须为 PAGE_ALLIGNED 才能用于 MMAP

b) krnl_area=(int *)((((unsigned long)krnl_ptr) + PAGE_SIZE - 1)&PAGE_MASK); 通过一些搜索我可以找出上面的代码相同, 但我还是不清楚它是如何完成的。

c) 如何确认已完成 MMAP 然后保留的 PAGE 它们没有使用 SetPageReserved 交换,已正确完成 通过内核。

即,如果我正在为 MMAPED 的 4 个页面执行 SetPageReserved, 我如何确认调度程序不会将这些页面交换为 我已经在这些页面上完成了SetPageReserved。

d) 是否有任何函数可以 UN_RESERVED 页面,我尝试过 SetUnPageReserved 但无法找出该函数的头文件

e) 有什么区别,即 (1) 和 (2) 中哪一个是正确的方法 提供 remap_pfn_range 中的物理地址...

(1) (virt_to_phys((void *)krnl_ptr) >> PAGE_SHIFT)

     or

(2) (vma->vm_pgoff)

因为我已经看到使用 (1) 或 (2) 的示例代码,但无法 明白它们是相同还是不同吗? 如果不同什么时候使用哪种形式?

最佳答案

对于第 (d) 点,取消保留 PAGE 的解决方案正确的函数是 ClearPageReserved(page)....

我仍在尝试理解其他要点。任何人都可以指导同样的事情

阿希什·米什拉

关于linux - 5 基本的mmap相关查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14576518/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com