*参照元 [#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]