linux-4.4.1/__pfn_to_page()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c13af72a]
#backlinks
*説明 [#ydeb446e]
-パス: [[linux-4.4.1/include/asm-generic/memory_model.h]]
-FIXME: これは何?
--指定したページフレーム番号に対応するページを取得する。
**引数 [#t5771aa2]
-unsigned long pfn
--ページフレーム番号
**返り値 [#l8323b01]
-struct page *
--ページ
--[[linux-4.4.1/page]]
**参考 [#h66e3d11]
-逆変換
--[[linux-4.4.1/__page_to_pfn()]]
*実装 [#j8925877]
**CONFIG_FLATMEM 有効 [#c2d0ee4a]
-
--[[linux-4.4.1/CONFIG_FLATMEM]]
#define __pfn_to_page(pfn) (mem_map + ((pfn) - ARCH...
-mem_map はメモリの先頭ページを指すポインタである。
--Linux ではページの構造体が配列のように並んでいるので、...
--ページ構造体の配列を仮に pages[] という名前だとすると、...
mem_map => pages[0]
mem_map + 1 => pages[1]
pages[...]
mem_map + pfn => pages[pfn]
--mem_map + 1 は、1ページ目、mem_map + pfn は pfn ページ...
--[[linux-4.4.1/mem_map(global)]]
--[[linux-4.4.1/ARCH_PFN_OFFSET]]
**CONFIG_DISCONTIGMEM 有効 [#jba5c2ec]
-
--[[linux-4.4.1/CONFIG_DISCONTIGMEM]]
#define __pfn_to_page(pfn) \
({ unsigned long __pfn = (pfn); \
unsigned long __nid = arch_pfn_to_nid(__pfn); \
NODE_DATA(__nid)->node_mem_map + arch_local_page...
-
--[[linux-4.4.1/arch_pfn_to_nid()]]
--[[linux-4.4.1/NODE_DATA()]]
--[[linux-4.4.1/arch_local_page_offset()]]
})
**CONFIG_SPARSEMEM_VMEMMAP 有効 [#q218691f]
-
--[[linux-4.4.1/CONFIG_SPARSEMEM_VMEMMAP]]
/* memmap is virtually contiguous. */
#define __pfn_to_page(pfn) (vmemmap + (pfn))
-
--[[linux-4.4.1/vmemmap(global)]]
**CONFIG_SPARSEMEM 有効 [#h220b4ba]
-
--[[linux-4.4.1/CONFIG_SPARSEMEM]]
#define __pfn_to_page(pfn) \
({ unsigned long __pfn = (pfn); \
struct mem_section *__sec = __pfn_to_section(__p...
-
--[[linux-4.4.1/mem_section]]
--[[linux-4.4.1/__pfn_to_section()]]
__section_mem_map_addr(__sec) + __pfn; \
-
--[[linux-4.4.1/__section_mem_map_addr()]]
})
*コメント [#db5d3743]
終了行:
*参照元 [#c13af72a]
#backlinks
*説明 [#ydeb446e]
-パス: [[linux-4.4.1/include/asm-generic/memory_model.h]]
-FIXME: これは何?
--指定したページフレーム番号に対応するページを取得する。
**引数 [#t5771aa2]
-unsigned long pfn
--ページフレーム番号
**返り値 [#l8323b01]
-struct page *
--ページ
--[[linux-4.4.1/page]]
**参考 [#h66e3d11]
-逆変換
--[[linux-4.4.1/__page_to_pfn()]]
*実装 [#j8925877]
**CONFIG_FLATMEM 有効 [#c2d0ee4a]
-
--[[linux-4.4.1/CONFIG_FLATMEM]]
#define __pfn_to_page(pfn) (mem_map + ((pfn) - ARCH...
-mem_map はメモリの先頭ページを指すポインタである。
--Linux ではページの構造体が配列のように並んでいるので、...
--ページ構造体の配列を仮に pages[] という名前だとすると、...
mem_map => pages[0]
mem_map + 1 => pages[1]
pages[...]
mem_map + pfn => pages[pfn]
--mem_map + 1 は、1ページ目、mem_map + pfn は pfn ページ...
--[[linux-4.4.1/mem_map(global)]]
--[[linux-4.4.1/ARCH_PFN_OFFSET]]
**CONFIG_DISCONTIGMEM 有効 [#jba5c2ec]
-
--[[linux-4.4.1/CONFIG_DISCONTIGMEM]]
#define __pfn_to_page(pfn) \
({ unsigned long __pfn = (pfn); \
unsigned long __nid = arch_pfn_to_nid(__pfn); \
NODE_DATA(__nid)->node_mem_map + arch_local_page...
-
--[[linux-4.4.1/arch_pfn_to_nid()]]
--[[linux-4.4.1/NODE_DATA()]]
--[[linux-4.4.1/arch_local_page_offset()]]
})
**CONFIG_SPARSEMEM_VMEMMAP 有効 [#q218691f]
-
--[[linux-4.4.1/CONFIG_SPARSEMEM_VMEMMAP]]
/* memmap is virtually contiguous. */
#define __pfn_to_page(pfn) (vmemmap + (pfn))
-
--[[linux-4.4.1/vmemmap(global)]]
**CONFIG_SPARSEMEM 有効 [#h220b4ba]
-
--[[linux-4.4.1/CONFIG_SPARSEMEM]]
#define __pfn_to_page(pfn) \
({ unsigned long __pfn = (pfn); \
struct mem_section *__sec = __pfn_to_section(__p...
-
--[[linux-4.4.1/mem_section]]
--[[linux-4.4.1/__pfn_to_section()]]
__section_mem_map_addr(__sec) + __pfn; \
-
--[[linux-4.4.1/__section_mem_map_addr()]]
})
*コメント [#db5d3743]
ページ名: