linux-4.4.1/__ioremap_caller()(arm64)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#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_a...
pgprot_t prot, voi...
{
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]]
/*
* Page align the mapping address and size, taki...
* offset.
*/
phys_addr &= PAGE_MASK;
size = PAGE_ALIGN(size + offset);
-
--[[linux-4.4.1/PAGE_ALIGN()]]
/*
* Don't allow wraparound, zero size or outside ...
*/
last_addr = phys_addr + size - 1;
if (!size || last_addr < phys_addr || (last_addr...
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, call...
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...
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]
終了行:
*参照元 [#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_a...
pgprot_t prot, voi...
{
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]]
/*
* Page align the mapping address and size, taki...
* offset.
*/
phys_addr &= PAGE_MASK;
size = PAGE_ALIGN(size + offset);
-
--[[linux-4.4.1/PAGE_ALIGN()]]
/*
* Don't allow wraparound, zero size or outside ...
*/
last_addr = phys_addr + size - 1;
if (!size || last_addr < phys_addr || (last_addr...
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, call...
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...
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]
ページ名: