*参照元 [#hb2e42c0] #backlinks *説明 [#n6397bee] -パス: [[linux-4.4.1/]] -パス: [[linux-4.4.1/lib/ioremap.c]] -FIXME: これは何? --説明 **引数 [#x2c8d29a] -pmd_t *pmd -- --[[linux-4.4.1/pmd_t]] -unsigned long addr -- -unsigned long end -- -phys_addr_t phys_addr -- --[[linux-4.4.1/phys_addr_t]] -pgprot_t prot -- --[[linux-4.4.1/pgprot_t]] **返り値 [#da4be3f3] -int -- **参考 [#x2d307c1] *実装 [#r3937e9f] static int ioremap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot) { pte_t *pte; u64 pfn; - --[[linux-4.4.1/pte_t]] pfn = phys_addr >> PAGE_SHIFT; pte = pte_alloc_kernel(pmd, addr); if (!pte) return -ENOMEM; - --[[linux-4.4.1/pte_alloc_kernel()]] do { BUG_ON(!pte_none(*pte)); - --[[linux-4.4.1/BUG_ON()]] --[[linux-4.4.1/pte_none()]] set_pte_at(&init_mm, addr, pte, pfn_pte(pfn, prot)); pfn++; - --[[linux-4.4.1/set_pte_at()]] --[[linux-4.4.1/init_mm(global)]] --[[linux-4.4.1/pfn_pte()]] } while (pte++, addr += PAGE_SIZE, addr != end); return 0; } *コメント [#c9f9a160]