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個のゾーンを検索して、 要求を満たせるページフレームの獲得を行う。
明日につづく
__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個のゾーンを検索して、 要求を満たせるページフレームの獲得を行う。
明日につづく
mm/page_alloc.c More ログイン