linux-4.4.1/prep_new_page()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#e49125f1]
#backlinks
*説明 [#sa8fae00]
-パス: [[linux-4.4.1/mm/page_alloc.c]]
-FIXME: これは何?
--説明
**引数 [#m50fc010]
-struct page *page
--
--[[linux-4.4.1/page]]
-unsigned int order
--
-gfp_t gfp_flags
--
--[[linux-4.4.1/gfp_t]]
-int alloc_flags
--
**返り値 [#bcb59d89]
-int
--
**参考 [#eaa58ae4]
*実装 [#z2aa694f]
static int prep_new_page(struct page *page, unsigned int...
int alloc_flags)
{
int i;
for (i = 0; i < (1 << order); i++) {
struct page *p = page + i;
if (unlikely(check_new_page(p)))
return 1;
}
-
--[[linux-4.4.1/unlikely()]]
--[[linux-4.4.1/check_new_page()]]
set_page_private(page, 0);
set_page_refcounted(page);
-
--[[linux-4.4.1/set_page_private()]]
--[[linux-4.4.1/set_page_refcounted()]]
arch_alloc_page(page, order);
kernel_map_pages(page, 1 << order, 1);
kasan_alloc_pages(page, order);
-
--[[linux-4.4.1/arch_alloc_page()]]
--[[linux-4.4.1/kernel_map_pages()]]
--[[linux-4.4.1/kasan_alloc_pages()]]
if (gfp_flags & __GFP_ZERO)
for (i = 0; i < (1 << order); i++)
clear_highpage(page + i);
-
--[[linux-4.4.1/__GFP_ZERO]]
--[[linux-4.4.1/clear_highpage()]]
if (order && (gfp_flags & __GFP_COMP))
prep_compound_page(page, order);
-
--[[linux-4.4.1/__GFP_COMP]]
--[[linux-4.4.1/prep_compound_page()]]
set_page_owner(page, order, gfp_flags);
-
--[[linux-4.4.1/set_page_owner()]]
/*
* page is set pfmemalloc when ALLOC_NO_WATERMARKS was ...
* allocate the page. The expectation is that the calle...
* steps that will free more memory. The caller should ...
* being used for !PFMEMALLOC purposes.
*/
if (alloc_flags & ALLOC_NO_WATERMARKS)
set_page_pfmemalloc(page);
else
clear_page_pfmemalloc(page);
-
--[[linux-4.4.1/set_page_pfmemalloc()]]
--[[linux-4.4.1/clear_page_pfmemalloc()]]
return 0;
}
*コメント [#e4e0cfdb]
終了行:
*参照元 [#e49125f1]
#backlinks
*説明 [#sa8fae00]
-パス: [[linux-4.4.1/mm/page_alloc.c]]
-FIXME: これは何?
--説明
**引数 [#m50fc010]
-struct page *page
--
--[[linux-4.4.1/page]]
-unsigned int order
--
-gfp_t gfp_flags
--
--[[linux-4.4.1/gfp_t]]
-int alloc_flags
--
**返り値 [#bcb59d89]
-int
--
**参考 [#eaa58ae4]
*実装 [#z2aa694f]
static int prep_new_page(struct page *page, unsigned int...
int alloc_flags)
{
int i;
for (i = 0; i < (1 << order); i++) {
struct page *p = page + i;
if (unlikely(check_new_page(p)))
return 1;
}
-
--[[linux-4.4.1/unlikely()]]
--[[linux-4.4.1/check_new_page()]]
set_page_private(page, 0);
set_page_refcounted(page);
-
--[[linux-4.4.1/set_page_private()]]
--[[linux-4.4.1/set_page_refcounted()]]
arch_alloc_page(page, order);
kernel_map_pages(page, 1 << order, 1);
kasan_alloc_pages(page, order);
-
--[[linux-4.4.1/arch_alloc_page()]]
--[[linux-4.4.1/kernel_map_pages()]]
--[[linux-4.4.1/kasan_alloc_pages()]]
if (gfp_flags & __GFP_ZERO)
for (i = 0; i < (1 << order); i++)
clear_highpage(page + i);
-
--[[linux-4.4.1/__GFP_ZERO]]
--[[linux-4.4.1/clear_highpage()]]
if (order && (gfp_flags & __GFP_COMP))
prep_compound_page(page, order);
-
--[[linux-4.4.1/__GFP_COMP]]
--[[linux-4.4.1/prep_compound_page()]]
set_page_owner(page, order, gfp_flags);
-
--[[linux-4.4.1/set_page_owner()]]
/*
* page is set pfmemalloc when ALLOC_NO_WATERMARKS was ...
* allocate the page. The expectation is that the calle...
* steps that will free more memory. The caller should ...
* being used for !PFMEMALLOC purposes.
*/
if (alloc_flags & ALLOC_NO_WATERMARKS)
set_page_pfmemalloc(page);
else
clear_page_pfmemalloc(page);
-
--[[linux-4.4.1/set_page_pfmemalloc()]]
--[[linux-4.4.1/clear_page_pfmemalloc()]]
return 0;
}
*コメント [#e4e0cfdb]
ページ名: