我跟踪Linux源代码并找到这个函数:void put_page(struct page *page)
我在谷歌上搜索了一下,有人说这个函数用来构建一个从物理帧地址到虚拟地址的映射。
但是我在mm/swap.c中跟踪了put_page函数。代码行为似乎不用于将物理地址映射到虚拟地址。
有人知道这个函数是做什么的吗?
发布于 2014-05-25 01:52:15
在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。
发布于 2014-05-25 03:21:53
"put_page“会将页面复制到超越内存,并将其与与页面相关的类型和偏移量相关联。
"get_page“会将页面从超越内存复制到内核内存中,但不会从超越内存中删除该页面。
有关详细信息,请参阅Linux内核文档:frontswap.txt。
发布于 2014-05-25 01:52:22
我只是found this,它看起来非常简洁和有用:
这些函数分为两个阶段:
将页从lru缓存中删除并将页分配给内存分配器
考虑分配过程:
在put_page函数中,不处理页表条目。因此,控制路径应该在调用这些函数之前修复/删除适当的页表条目。
https://stackoverflow.com/questions/23848015
复制相似问题