*参照元 [#a26b2e5d]
#backlinks

*説明 [#a1d06f23]
-パス: [[linux-4.4.1/]]
-パス: [[linux-4.4.1/mm/memory.c]]

-FIXME: これは何?
--説明


**引数 [#q527db35]
-struct mm_struct *mm
--
--[[linux-4.4.1/mm_struct]]
-pud_t *pud
--
--[[linux-4.4.1/pud_t]]
-unsigned long addr
--
-unsigned long end
--
-unsigned long pfn
--
-pgprot_t prot
--
--[[linux-4.4.1/pgprot_t]]


**返り値 [#wa01fd4b]
-int
--


**参考 [#j7637401]


*実装 [#w273b3b9]
 static inline int remap_pmd_range(struct mm_struct *mm, pud_t *pud,
                         unsigned long addr, unsigned long end,
                         unsigned long pfn, pgprot_t prot)
 {
         pmd_t *pmd;
         unsigned long next;
 
         pfn -= addr >> PAGE_SHIFT;
         pmd = pmd_alloc(mm, pud, addr);
         if (!pmd)
                 return -ENOMEM;
-
--[[linux-4.4.1/PAGE_SHIFT]]
--[[linux-4.4.1/pmd_alloc()]]

         VM_BUG_ON(pmd_trans_huge(*pmd));
-
--[[linux-4.4.1/VM_BUG_ON()]]
--[[linux-4.4.1/pmd_trans_huge()]]

         do {
                 next = pmd_addr_end(addr, end);
-
--[[linux-4.4.1/pmd_addr_end()]]

                 if (remap_pte_range(mm, pmd, addr, next,
                                 pfn + (addr >> PAGE_SHIFT), prot))
                         return -ENOMEM;
-
--[[linux-4.4.1/remap_pte_range()]]

         } while (pmd++, addr = next, addr != end);
         return 0;
 }


*コメント [#kab5793e]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS