我跟踪Linux源代码并找到此函数:void put_page(struct page *page)
我用Google搜索并且有人说这个函数用于构建从物理帧地址到虚拟地址的映射。
但我追踪put_page
中的mm/swap.c
函数。代码行为似乎不用于将物理地址映射到虚拟地址。
任何人都知道这个功能是做什么的吗?
答案 0 :(得分:2)
在Linux内核中,名为put_
的函数通常意味着"释放"或者"发布"一些东西。 (" put"与" get"相反)。从简短的代码看,似乎调用函数来释放struct page
。
实际记录了(相关)函数put_pages_list
:
/**
* put_pages_list() - release a list of pages
* @pages: list of pages threaded on page->lru
*
* Release a list of pages which are strung together on page.lru. Currently
* used by read_cache_pages() and related error recovery code.
*/
对我来说,这证实put_page
"发布"一个struct page
。
答案 1 :(得分:2)
A" put_page"将页面复制到超越内存并将其与类型和 与页面关联的偏移量。
A" get_page"将页面(如果找到)从超越内存复制到内核内存中,但不会从超越内存中删除页面。
有关详细信息,请参阅Linux内核文档:frontswap.txt。
答案 2 :(得分:1)
我只是found this这看起来非常简洁&有用:
这些功能有两个阶段:
- 从lru缓存中删除该页面(__page_cache_release)
- 将页面释放到内存分配器
醇>考虑分配过程:
- 页面已分配
- 页面表条目已修复
- 页面已添加到lru缓存中。
醇>在
put_page
函数中,不处理页表条目。所以 控制路径应该修复/删除适当的页表条目 在调用函数之前取决于。