- 論壇徽章:
- 0
|
原帖由 思一克 于 2007-6-13 15:18 發(fā)表于 22樓
remap_pfn_range是用來map整個物理內(nèi)存成一個文件。這時,vm_pgoff的數(shù)值就等于物理頁號。
還是不明白啊,大哥remap_pfn_range最終會調(diào)用下面函數(shù),對于vm_pgoff=0,第一次調(diào)用時,pfn為0,
所以下面set_pte_at(mm, addr, pte, pfn_pte(pfn, prot)將第0頁內(nèi)存映射進(jìn)進(jìn)程空間?
不能理解remap_pfn_range函數(shù),請各位多多指教
static int remap_pte_range(struct mm_struct *mm, pmd_t *pmd,
unsigned long addr, unsigned long end,
unsigned long pfn, pgprot_t prot)
{
pte_t *pte;
spinlock_t *ptl;
pte = pte_alloc_map_lock(mm, pmd, addr, &ptl);
if (!pte)
return -ENOMEM;
arch_enter_lazy_mmu_mode();
do {
BUG_ON(!pte_none(*pte));
set_pte_at(mm, addr, pte, pfn_pte(pfn, prot));
pfn++;
} while (pte++, addr += PAGE_SIZE, addr != end);
arch_leave_lazy_mmu_mode();
pte_unmap_unlock(pte - 1, ptl);
return 0;
} |
|