*参照元 [#q3fa1bf4]
#backlinks

*説明 [#x4dc177e]
-パス: [[linux-4.4.1/include/linux/page-flags.h]]

-ページが未使用状態かどうかを取得する。
--ページの _mapcount が PAGE_BUDDY_MAPCOUNT_VALUE かどうかで判定できる。
_mapcount が PAGE_BUDDY_MAPCOUNT_VALUE の値=未使用、という意味になるようだ。
---PAGE_BUDDY_MAPCOUNT_VALUE は -128
--_mapcount はページが割り当てられたときに -1 に設定され、
以降ページがマップされた際にインクリメントされる。
--未使用/使用中の状態を表すためだけならば、
PAGE_BUDDY_MAPCOUNT_VALUE <= -2 ならどんな値でも良いことになるが、
アンダーフローを考慮すると -1 より十分小さい値であることが望ましい。


**引数 [#la18adf8]
-struct page *page
--ページ
--[[linux-4.4.1/page]]


**返り値 [#s363bb6a]
-int
--使用中なら 0、未使用状態なら 0 以外


**参考 [#ie11d5b6]

-設定
--[[linux-4.4.1/__SetPageBuddy()]]

-page_order とも関係が深い
--[[linux-4.4.1/page_order()]]
--[[linux-4.4.1/set_page_order()]]
--[[linux-4.4.1/rmv_page_order()]]


*実装 [#qa092d98]
 /*
  * PageBuddy() indicate that the page is free and in the buddy system
  * (see mm/page_alloc.c).
  *
  * PAGE_BUDDY_MAPCOUNT_VALUE must be <= -2 but better not too close to
  * -2 so that an underflow of the page_mapcount() won't be mistaken
  * for a genuine PAGE_BUDDY_MAPCOUNT_VALUE. -128 can be created very
  * efficiently by most CPU architectures.
  */
 #define PAGE_BUDDY_MAPCOUNT_VALUE (-128)
 
 static inline int PageBuddy(struct page *page)
 {
 	return atomic_read(&page->_mapcount) == PAGE_BUDDY_MAPCOUNT_VALUE;
 }
-ページの _mapcount が PAGE_BUDDY_MAPCOUNT_VALUE かどうかを返す。
--[[linux-4.4.1/atomic_read()]]


*コメント [#pab506b4]

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