#author("2025-10-20T16:28:43+09:00","default:guest","guest")
#author("2025-10-20T16:36:32+09:00","default:guest","guest")
*参照元 [#h5e7e398]
#backlinks

*説明 [#he50ee21]
-パス: [[linux-5.15/mm/page_alloc.c]]

-orderとmigratetypeからper_cpu_pagesのlistインデックスを得る。
--[[linux-5.15/メモリ管理]]


**引数 [#y31132ee]
-int migratetype
--migrateの種類
--migratetypeのうちどれか
--0: MIGRATE_UNMOVABLE
--1: MIGRATE_MOVABLE
--2: MIGRATE_RECLAIMABLE
--3: MIGRATE_PCPTYPES(もしくはHIGHATOMIC)
-int order
--オーダー
--Transparent Hugepageが無効のとき: 3以下である必要がある
--Transparent Hugepageが有効のとき: 3以下ならそのまま計算に使う、それ以上なら4とみなして計算に使う
---order 3 = PAGE_ALLOC_COSTLY_ORDER、Per-CPU pagesから取るかどうかの境目になる


**返り値 [#cf730c87]
-int
--リストのインデックス
--order * 3 + migratetype


**参考 [#fd884f04]


*実装 [#ob4b3205]

 static inline unsigned int order_to_pindex(int migratetype, int order)
 {
 	int base = order;
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	if (order > PAGE_ALLOC_COSTLY_ORDER) {
 		VM_BUG_ON(order != pageblock_order);
 		base = PAGE_ALLOC_COSTLY_ORDER + 1;
 	}
 #else
 	VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER);
 #endif
 
 	return (MIGRATE_PCPTYPES * base) + migratetype;
 }

-PAGE_ALLOC_COSTLY_ORDERは3
--[[linux-5.15/include/linux/mmzone.h]]


*コメント [#t6411068]

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