首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效put_page(struct page *page)在Linux中的使用

无效put_page(struct page *page)在Linux中的使用
EN

Stack Overflow用户
提问于 2014-05-25 01:46:29
回答 3查看 3.7K关注 0票数 2

我跟踪Linux源代码并找到这个函数:void put_page(struct page *page)

我在谷歌上搜索了一下,有人说这个函数用来构建一个从物理帧地址到虚拟地址的映射。

但是我在mm/swap.c中跟踪了put_page函数。代码行为似乎不用于将物理地址映射到虚拟地址。

有人知道这个函数是做什么的吗?

EN

回答 3

Stack Overflow用户

发布于 2014-05-25 01:52:15

在Linux内核中,名为put_的函数通常意味着“释放”或“释放”某些东西。(因为"put“是”get“的反义词)。从代码中简单地看一下,调用该函数似乎是为了释放struct page

(相关的)函数put_pages_list实际上有文档记录:

代码语言:javascript
复制
/**
 * 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

票数 2
EN

Stack Overflow用户

发布于 2014-05-25 03:21:53

"put_page“会将页面复制到超越内存,并将其与与页面相关的类型和偏移量相关联。

"get_page“会将页面从超越内存复制到内核内存中,但不会从超越内存中删除该页面。

有关详细信息,请参阅Linux内核文档:frontswap.txt

票数 2
EN

Stack Overflow用户

发布于 2014-05-25 01:52:22

我只是found this,它看起来非常简洁和有用:

这些函数分为两个阶段:

将页从lru缓存中删除并将页分配给内存分配器

考虑分配过程:

  1. 页是allocated
  2. page表条目是固定的,
  3. 页被添加到lru缓存。

put_page函数中,不处理页表条目。因此,控制路径应该在调用这些函数之前修复/删除适当的页表条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23848015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档