- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#ya2c6c2b]
#backlinks
*説明 [#yda55f4b]
-パス: [[linux-4.4.1/include/asm-generic/memory_model.h]]
-FIXME: これは何?
--説明
--指定したページのページフレーム番号を取得する。
**引数 [#n4bec2b2]
-struct page *page
--
--ページ
--[[linux-4.4.1/page]]
**返り値 [#g410c8e4]
-unsigned long
--
--ページフレーム番号
**参考 [#mcd8f91b]
-逆変換
--[[linux-4.4.1/__pfn_to_page()]]
*実装 [#w5eb5608]
**CONFIG_FLATMEM 有効 [#id7321c5]
-
--[[linux-4.4.1/CONFIG_FLATMEM]]
#define __page_to_pfn(page) ((unsigned long)((page) - mem_map) + \
ARCH_PFN_OFFSET)
-
--[[linux-4.4.1/ARCH_PFN_OFFSET]]
**CONFIG_DISCONTIGMEM 有効 [#k212a46b]
#define __page_to_pfn(pg) \
({ const struct page *__pg = (pg); \
struct pglist_data *__pgdat = NODE_DATA(page_to_nid(__pg)); \
-
--[[linux-4.4.1/pglist_data]]
--[[linux-4.4.1/NODE_DATA()]]
--[[linux-4.4.1/page_to_nid()]]
(unsigned long)(__pg - __pgdat->node_mem_map) + \
__pgdat->node_start_pfn; \
})
**CONFIG_SPARSEMEM_VMEMMAP 有効 [#u8666aba]
#define __page_to_pfn(page) (unsigned long)((page) - vmemmap)
-
--[[linux-4.4.1/vmemmap(global)]]
**CONFIG_SPARSEMEM 有効 [#v7fff736]
/*
* Note: section's mem_map is encoded to reflect its start_pfn.
* section[i].section_mem_map == mem_map's address - start_pfn;
*/
#define __page_to_pfn(pg) \
({ const struct page *__pg = (pg); \
int __sec = page_to_section(__pg); \
-
--[[linux-4.4.1/page_to_section()]]
(unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec))); \
-
--[[linux-4.4.1/__section_mem_map_addr()]]
--[[linux-4.4.1/__nr_to_section()]]
})
*コメント [#a1e96ae7]