パスワードを忘れた? アカウント作成
360248 journal

salemの日記: mm/page_alloc.c

日記 by salem
struct page * fastcall
__alloc_pages(unsigned int gfp_mask, unsigned int order, struct zonelist *zonelist)

要約
__alloc_pages()はzonelistから2^order個の連続したページフレームを獲得する。
獲得出来なかった場合はNULLを返す。

might_sleep_if()はマクロでCONFIG_DEBUG_SPINLOCK_SLEEPが定義されている場合のみ処理が行われる。
zonelist->zones[0]がNULLの場合はNULLを返す。
ページフレームの獲得の主な処理は以下のループで行われる
for (i = 0; zones[i] != NULL; i++) {
...
}
このループでZONE_DMA(先頭から16MBまでのメモリ),
ZONE_NORMAL(16MBから896MBまでのメモリ),
ZONE_HIGHMEM(896MB以降のメモリ)の3個のゾーンを検索して、 要求を満たせるページフレームの獲得を行う。

明日につづく
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...