#author("2025-10-31T11:23:15+09:00","default:guest","guest")
#author("2025-10-31T11:23:36+09:00","default:guest","guest")
*参照元 [#l2fa4f66]
#backlinks

*説明 [#k62f69dd]
-パス: [[linux-5.15/include/linux/mmzone.h]]

-マイグレーションの種類(MIGRATE_XXX)に該当するfree_listの先頭ページを返す。
--ページがなければNULLを返す。


**引数 [#t2e5fb1c]
-struct free_area *area
--
--[[linux-5.15/free_area]]
-int migratetype
--マイグレーションの種類、MIGRATE_XXX を指定する


**返り値 [#r0288124]
-struct page *
--マイグレーションの種類(MIGRATE_XXX)に該当するfree_listの先頭ページを返す。
--ページがなければNULLを返す。
--[[linux-5.15/page]]


**参考 [#ga2690a9]


*実装 [#mb393a04]

 static inline struct page *get_page_from_free_area(struct free_area *area,
 					    int migratetype)
 {
 	return list_first_entry_or_null(&area->free_list[migratetype],
 					struct page, lru);
 }

-area->free_list自体はstruct page *のメンバーではない。free_listのnext以降はstruct pageのlruメンバー。
--[[linux-5.15/list_first_entry_or_null()]]

 空きページがないとき
 
 free_list --|
   `<-(next)--
 
 空きページがあるとき
 
 free_list --(next)--> page->lru --(next)--> page->lru --|
   `--<---------------------(next)--<--------------------- 


*コメント [#v3dad8a3]

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