Linux内存管理内核函数

get_page

get_page(struct page *page)
让page的_count加一,以防在处理page的时候该page被内核释放掉。

put_page

put_page(struct page *page)
让page的_count加减一,一般该函数会与get_page配合使用。

page_cache_release

#define page_cache_release(page) put_page(page)
该函数即为put_page(page)

alloc_pages

struct page * alloc_pages(gfp_t gfp_mask, unsigned int order)
该函数申请的内存是内核内存,而不是用户的内存。
alloc_pages()函数以gfp_mask分配方式分配2的order次方(1<<order)个连续的物理页。

__get_free_pages

unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
与alloc_pages功能相同,只是该函数返回的值为所请求的第一个页的逻辑地址。