*参照元 [#he2d3acb]
#backlinks

*説明 [#v3ec0124]
-パス: [[linux-4.4.1/arch/arm64/mm/ioremap.c]]

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


**引数 [#e93a0878]
-phys_addr_t phys_addr
--
--[[linux-4.4.1/phys_addr_t]]
-size_t size
-pgprot_t prot
--
--[[linux-4.4.1/pgprot_t]]
-void *caller
--


**返り値 [#l835362d]
-void __iomem *
--


**参考 [#i0e3f4e4]


*実装 [#u041aac1]
 static void __iomem *__ioremap_caller(phys_addr_t phys_addr, size_t size,
                                       pgprot_t prot, void *caller)
 {
         unsigned long last_addr;
         unsigned long offset = phys_addr & ~PAGE_MASK;
         int err;
         unsigned long addr;
         struct vm_struct *area;
 
-
--[[linux-4.4.1/vm_struct ]]
--[[linux-4.4.1/vm_struct]]

         /*
          * Page align the mapping address and size, taking account of any
          * offset.
          */
         phys_addr &= PAGE_MASK;
         size = PAGE_ALIGN(size + offset);
 
-
--[[linux-4.4.1/PAGE_ALIGN()]]

         /*
          * Don't allow wraparound, zero size or outside PHYS_MASK.
          */
         last_addr = phys_addr + size - 1;
         if (!size || last_addr < phys_addr || (last_addr & ~PHYS_MASK))
                 return NULL;
 
         /*
          * Don't allow RAM to be mapped.
          */
         if (WARN_ON(pfn_valid(__phys_to_pfn(phys_addr))))
                 return NULL;
 
-
--[[linux-4.4.1/WARN_ON()]]
--[[linux-4.4.1/pfn_valid()]]
--[[linux-4.4.1/__phys_to_pfn()]]

         area = get_vm_area_caller(size, VM_IOREMAP, caller);
         if (!area)
                 return NULL;
-
--[[linux-4.4.1/get_vm_area_caller()]]

         addr = (unsigned long)area->addr;
         area->phys_addr = phys_addr;
 
         err = ioremap_page_range(addr, addr + size, phys_addr, prot);
         if (err) {
                 vunmap((void *)addr);
                 return NULL;
         }
 
-
--[[linux-4.4.1/ioremap_page_range()]]
--[[linux-4.4.1/vunmap()]]

         return (void __iomem *)(offset + addr);
 }


*コメント [#bc991541]

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