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