5基本MMAP相关查询

时间:2013-01-29 05:54:33

标签: linux mmap

请你帮我理解下面提到的关于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)的示例代码但不能    了解它们是相同还是不同?    如果不同,何时使用哪种形式?

1 个答案:

答案 0 :(得分:0)

对于点(d),取消保留PAGE的解决方案正确的功能是ClearPageReserved(页面)....

我仍在努力了解其他要点。任何人都可以指导相同的

Ashish Mishra