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

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